Javascript 中call 和 apply的比较

版权声明:如果有帮助的话,转载前记得告诉我一声 https://blog.csdn.net/yunzhilongteng/article/details/80044651

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

猜你喜欢

转载自blog.csdn.net/yunzhilongteng/article/details/80044651
今日推荐