call和apply的用法与区别

  每个函数都包含两个非继承而来的方法:apply()call()。;

  call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性;


作用:改变this指向
区别:传参不同 call()参数 第一个参数是this值没有变化,其余参数都是直接传递给函数,传递函数的参数必须逐个列举出来
         apply() 传递给函数的参数是数组


call用法

function Person(name,age){
this.name=name;
this.age=age;
}
var person=new Person('zhangsan',15);
var obj1={}
Person.call(obj1,'wangmazi',29)
console.log(obj1)  //{name: "wangmazi", age: 29}

apply用法

function Person(name,age){
this.name=name;
this.age=age;
}
var person=new Person('zhangsan',15);
var obj1={}
Person.apply(obj1,['李四','18'])
console.log(obj1)  //{name: "李四", age: "18"}

原文地址:https://www.cnblogs.com/h5it/p/12749861.html