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