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"}

 

posted @ 2020-04-22 09:31  菜鸟程序员的总结  阅读(763)  评论(0)    收藏  举报