每个函数都包含两个非继承而来的方法: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"}