We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
上下文具有动态性(函数中的this如果不在调用时改变的话,this就是全局变量;对象中的this如果不再调用时改变的话,this就是该对象本身) this的值由调用者提供(例如调用函数的父上下文),由函数的调用方式决定。
this的值不是在函数创建时决定,具有动态性。 this的值在进入上下文时决定,并且在执行过程中不可变。 this不能像变量赋值一样为this赋值。
this是永远不会延作用域链或原型链出现一个“查找”的过程的,只会在函数调用时就完全确认。内部函数在搜索这个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中的这两个变量。(可以将外部作用域中的this对象保存在一个闭包能够访问的变量中,that)
经常用于混淆的例子: button.onclick = myObject.handler; 使用bind方法避免这个问题。
button.onclick = myObject.handler;
函数对象具有bind方法,用于创建一个函数的实例,该函数的this值会被绑定到bind()的参数,接受一个参数,this作用域。
将 apply 或 call 方式作为函数调用的基本方式,其他几种方式都是在这一基础上的演变,或称之为语法糖。函数调用时 this 绑定的过程,不管函数以何种方式调用,均需完成这一绑定过程,不同的是,作为函数调用时,this 绑定到全局对象;作为方法调用时,this 绑定到该方法所属的对象。
func(p1, p2) 等价于 func.call(undefined, p1, p2)//如果你传的 context 不是一个对象,那么 window 对象就是默认的 context。 obj.child.method(p1, p2) 等价于 obj.child.method.call(obj.child, p1, p2)
1.JavaScript中的对象查找 2.深入浅出 JavaScript 中的 this 3.this - JavaScript | MDN 4.如何理解 JavaScript 中的 this 关键字? - 知乎
The text was updated successfully, but these errors were encountered:
No branches or pull requests
定义
上下文具有动态性(函数中的this如果不在调用时改变的话,this就是全局变量;对象中的this如果不再调用时改变的话,this就是该对象本身)
this的值由调用者提供(例如调用函数的父上下文),由函数的调用方式决定。
this的值不是在函数创建时决定,具有动态性。
this的值在进入上下文时决定,并且在执行过程中不可变。
this不能像变量赋值一样为this赋值。
this是永远不会延作用域链或原型链出现一个“查找”的过程的,只会在函数调用时就完全确认。内部函数在搜索这个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中的这两个变量。(可以将外部作用域中的this对象保存在一个闭包能够访问的变量中,that)
调用方式
易错点
经常用于混淆的例子:
button.onclick = myObject.handler;
使用bind方法避免这个问题。
语法糖
将 apply 或 call 方式作为函数调用的基本方式,其他几种方式都是在这一基础上的演变,或称之为语法糖。函数调用时 this 绑定的过程,不管函数以何种方式调用,均需完成这一绑定过程,不同的是,作为函数调用时,this 绑定到全局对象;作为方法调用时,this 绑定到该方法所属的对象。
其他
参考资料
1.JavaScript中的对象查找
2.深入浅出 JavaScript 中的 this
3.this - JavaScript | MDN
4.如何理解 JavaScript 中的 this 关键字? - 知乎
The text was updated successfully, but these errors were encountered: