2.javascript中call()和apply()区别

(一)apply()和call()的区别

apply接受两个参数,第一个参数指定了函数体内this对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可以为类数组,

apply方法把这个集合中的元素作为参数传递给被调用的函数。

let func = function(a,b,c){
    console.log([a,b,c])
}
func.apply(null,[1,2,3])  // [1,2,3]

 

call传入的参数数量不固定,跟apply相同的是,第一个参数也是代表函数体内的this指向,从第二个参数开始往后,每个参数被依次传入函数

let func = function(a,b,c){
    console.log([a,b,c])
}
func.call(null,3,4,5) // [3,4,5]

 

(二)apply()和call()用途

var obj1 ={
  name: 'kim'
}
var obj2 = {
  name: 'john'
}
window.name = 'window';
var getName = function(){
  console.log(this.name);
}
getName(); // window
getName.call(obj1); // kim   this指向了obj1
getName.apply(obj2);  // john   this指向了obj2

 

 

posted @ 2019-11-13 15:37  林玖女神  阅读(321)  评论(0编辑  收藏  举报