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继承父级方法