标签:
1.填充VO的顺序是: 函数的形参 -> 函数申明 -> 变量申明。
首先,就是this值是如何定义的,当一个方法在对象上调用的时候,this就指向到了该对象上,例如:
var object = {
method: function() {
alert(this === object); //true
}
}
object.method();
function a() {
alert(this);
}
a.call(null);
了解一下call()是做什么的,call方法作为一个function执行代表该方法可以让另外一个对象作为调用者来调用,call方法的第一个参数是对象调用者,随后的其它参数是要传给调用method的参数(如果声明了的话),例如:
function method() {
alert(this === window);
}
method(); //true
method.call(document); //false
第一个依然是true没什么好说的,第二个传入的调用对象是document,自然不会等于window,所以弹出了false。
另外,根据ECMAScript262规范规定:如果第一个参数传入的对象调用者是null或者undefined的话,call方法将把全局对象(也就是window)作为this的值。所以,不管你什么时候传入null,其this都是全局对象window,所以该题目可以理解成如下代码:
function a() {
alert(this);
}
a.call(window);
所以弹出的结果是[object Window]就很容易理解了。
标签:
原文地址:http://www.cnblogs.com/up9527/p/4515112.html