call() 和 apply() 的作用以及区别

call() 和 apply() 是预定义的函数方法。
它们作用一样——改变上下文,即this的指向。只是使用方式不同。

语法:
foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments)
== this.foo(arg1, arg2, arg3);

apply方法——能劫持另外一个对象的方法,继承另外一个对象的属性.

Function.apply(obj,args)方法能接收两个参数,实现将函数作为另外一个对象的方法运行
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args–>arguments)

call方法——与apply的作用相同,只不过是参数列表不一样.

Function.call(obj,[param1[,param2[,…[,paramN]]]])
obj:这个对象将代替Function类里this对象
params:这个是一个参数列表

第一个参数传入的都是对象,区别在于第二个参数。

function A(){
     this.flag = 'A';
     this.tip = function(){
         alert(this.flag);
     };
}
function B(){
    this.flag = 'B';
}
var a = new A();
var b = new B();
//a.tip.call(b);
a.tip.apply(b);//弹出'B'

call 和 apply 都可以让B对象调用A对象的tip方法,并且修改了this的当前作用对象.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值