this全局执行上下文中的值引用全局对象,例如:
this === window; // true
对于功能代码,实际上取决于您如何调用该功能,例如,在以下
this情况下隐式设置该值:
调用没有 基础对象 引用的函数:
myFunc();
该
this值还将引用全局对象。
调用绑定为对象属性的函数 :
obj.method();
该
this值将参考
obj。
使用new
运算符:
new MyFunc();
该
this值将引用从继承的新创建的对象
MyFunc.prototype。
另外,可以在调用函数时使用
call或
apply方法显式设置该值,例如:
function test(arg) { alert(this + arg);}test.call("Hello", " world!"); // will alert "Hello World!"call和之间的区别
apply是
apply,您可以使用Array或
arguments对象正确传递任意数量的参数,例如:
function sum() { var result = 0; for (var i = 0; i < arguments.length; i++) { result += arguments[i]; } return result;}var args = [1,2,3,4];sum.apply(null, args); // 10// equivalent to callsum(1,2,3,4); // 10如果第一个参数的值
call或者
apply是
null或
undefined,该
this值将引用全局对象。
(请注意,将来这会随着ECMAscript 5的变化而改变,
call并
apply在
thisArg不更改的情况下传递值)



