apply和call真正意义是干嘛用的呢?

2011-08-19 10:42:23 by 【6yang】, 119 visits, 收藏 | 返回

apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:

比如:

var foo = {
    a:function(){
        this.destroy(); // 这里的this就是对应的对象;
    },
    b:{
        fn:function(){
            var self = this;
            foo.a.apply(this, []); // 这里的this是指像fn对象
            return foo.a;
        },
        destroy:function(){
            alert('destroyed~');
        }
    }
}
foo.b.fn();

 


Function.prototype.apply(thisArg,argArray);
Function.prototype.call(thisArg[,arg1[,arg2…]]);
从 函数原型可以看到,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,这就实现了将函数作为另外一个对象的 方法运行的目的。两个方法除了thisArg参数,都是为Function对象传递的参数。下面的代码说明了apply和call方法的工作方式:

分享到:
share

    图片原图

    loading

    loading