理解this
JavaScript中this和其它语言中的不同。在下面这些情况中,分别有不同的指向
函数调用
1 | function foo() { |
这里this指向全局对象,浏览器中的全局对象为window
方法调用
1 | var foo = { |
假如我们把这个方法负值给一个变量再调用会怎么样,我们试试:
1 | var foo = { |
是不是很神奇,一会我会说一个简便的理解方法。
构造函数
1 | new foo(); |
这种形式我们称之为构造函数,这时this指向新创建的对象
主动设置this
1 | function foo(name) { |
当时我们使用call或者apply时,传入的第一个参数即位this
简便理解
我们可以将函数调用转化为call的形式,call中第一个参数即位调用的函数前面的部分。
直接调用
我们可以将
1 | foo(); |
转化为
1 | foo.call(); |
此时foo前面没有对象,没有给call传入this参数,此时默认为全局对象,即window
方法调用
方法调用时,我们可以将
1 | foo.method(); |
转化为
1 | foo.method.call(foo); |
method前面的对象为foo,则此时前面的this指向foo对象。