this的绑定和函数声明的位置没有任何关系(这是与词法作用域最大的不同),取决于函数的调用方式,函数不同的调用方式,决定了函数内this的绑定对象。
函数有4种不同的调用方式:
function foo(){ ???//...}foo()//1var o = Object.create(null);o.foo = foo;o.foo();//2foo.call(window)//3,或者foo.apply(window)new foo()//4
优先级:new>显式>隐式>默认。
JS简记-this
原文地址:https://www.cnblogs.com/holoyong/p/8975478.html