(一)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