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);

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

posted on 2012-06-27 14:01  ycty  阅读(59)  评论(0)    收藏  举报