Function.apply()
1
var x = 10 ;
2
var o = {x: 15 } ;
3
function foo()
4
{
5
alert(this.x);
6
}
7
foo();
8
foo.call(o);
var x = 10 ;2
var o = {x: 15 } ;3
function foo()4
{5
alert(this.x);6
} 7
8
foo.call(o); 运行之后,我们会发现结果会分别是10和15。这似乎有点疑惑了,当然关键点肯定就是那个Call了。
Javascript 中的function本身也是一个object,它本身就会有tostring(),call(),apply()几个附加方法。这个 function.call的意义就在于,当调用时它时,运行时会把它的第一个参数替换掉function的this指向。
当调用foo()时,this是指向window的,而事实上,所有的全局变量就是window的属性。foo.call(o)时,this是指向o的。
理解了function.call的作用,当解决上面的问题就不难了。
浙公网安备 33010602011771号