call和apply的区别

call和apply作用相同、都是解决this指向问题,只是传参方式不同

除了第一个参数(默认为window)call只接受参数列表,apply只接受参数数组
let test
= {   value:12 }
function demo(name,sex){   console.log(name)   console.log(sex)   console.log(this.value) }
demo.call(test,
'zachary','man') // 12 zachary man demo.apply(test,['zachary','man']) // 12 zachary man

除了字面量的 我们还可以 this 指向函数里面的

function a(){
this.value = 12
}
function demo(){ //a.call(this) a.apply(this) }
let aa
= new demo() console.log(aa.value)
小结一下可以这么理解 

call继承父级属性,prototype继承父级方法

猜你喜欢

转载自www.cnblogs.com/Model-Zachary/p/10094097.html