apply和call的区别

/*apply()方法*/
function.apply(thisObj[, argArray])

/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);

共同点:都是thisObj调用function的方法
不同点:apply只能接收一个参数,且必须为数组,
    call可以接收多个参数

作用:

示例代码:

(1)基本用法

function sub(a,b){
  return a-b;
}
var a1 = add.apply(sub,[4,2]);  //sub调用add的方法
alert(a1); //6
var a1 = add.call(sub,4,2);     /*call的用法*/
(2)实现继承

function Animal(name){
  this.name = name;
  this.showName = function(){
    alert(this.name);
  }
}

function Cat(name){
  Animal.apply(this,[name]);
}

var cat = new Cat("咕咕");
cat.showName();

/*call的用法*/
Animal.call(this,name);
 (3)多重继承
function Class10(){
  this.showSub = function(a,b){
    alert(a - b);
  }
}

function Class11(){
  this.showAdd = function(a,b){
    alert(a + b);
  }
}

function Class12(){
  Class10.apply(this);
  Class11.apply(this);
  // Class10.call(this);
  //Class11.call(this);
}

var c2 = new Class12();
c2.showSub(3,1); //2
c2.showAdd(3,1); //4

参考:原文链接:https://blog.csdn.net/sinat_19803127/article/details/80280761

原文地址:https://www.cnblogs.com/hsmWorld/p/11506708.html