理解call和apply方法

window.color = "red;

var o = {

      color:"blue"

     };

function sayColor(){

      alert(this.color);

    }

sayColor();  //red

sayColor.call(this);  //red

sayColor.call(window);  //red

sayColor.call(o);  //blue

理解:sayColor()本身在全局作用域中,当参数是this和window时,sayColor()就是全局函数;

                                                   当参数是 o 的时候,sayColor()就变成了对象 o 的函数了。

一句话改变函数作用域,并且传递参数。

即call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。

posted @ 2017-03-13 20:17  我啊我  阅读(135)  评论(0编辑  收藏  举报