`
reallyafei
  • 浏览: 97175 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

apply, call的用法与区别

阅读更多

相同点:两个方法产生的作用是完全一样的

不同点:方法传递的参数不同

在JavaScript中,代码总是有一个上下文对象,代码处理该对象之内. 上下文对象是通过this变量来体现的, 这个this变量永远指向当前代码所处的对象中

call, apply作用就是借用别人的方法来调用,就像调用自己的一样

call, apply方法区别是,从第二个参数起, call方法参数将依次传递给借用的方法作参数, 而apply直接将这些参数放到一个数组中再传递, 最后借用方法的参数列表是一样的.

如下例子可以看出它们的用法与区别

function A() {
    this.message = "A";
    this.getMessage = function() {
        return this.message;
    }
}

function B() {
    this.message = "B";
    this.setMessage = function(msg) {
        this.message = msg;
    }
    
}

var a = new A();
var b = new B();
b.setMessage.call(a,"A的消息");
alert(a.getMessage());
alert(a.getMessage.call(b));

function test(msg) {
   b.setMessage.apply(a,[msg]); 
 //  b.setMessage.apply(a,arguments); 
}
test("测试");
alert(a.getMessage());
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics