Javascript 中call 和 apply的比较

call和apply用于在特定作用域中调用函数,简单地说就是改变函数中this指针的指向

语法定义说明
call(thisObj,Object)调用一个对象的一个方法,以另一个对象替换当前对象。call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj
apply(thisObj,[argArray])应用某一对象的一个方法,用另一个对象替换当前对象。如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数
举个例子:
function sayHi(){
   return this.name;
}
var obj = {name:"Napoleon"};
var name = "Global";

console.log(sayHi.call(this));// Global
console.log(sayHi.apply(obj));// Napoleon

call 和 apply 可以用于实现继承,在父类function中定义方法,在子类function中定义方法中用到的具体属性、

call 和 apply之间的不同如下:

  • 参数不同, apply 传入的是一个参数数组,也就是将多个参数组合成一个参数数组, call 从第二个参数开始依次传入.
  • apply 可以直接将当前函数的arguments对象作为apply的第二个参数传入


Reference:https://www.cnblogs.com/qiaojie/p/5746688.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值