先准备数据
const newobj={
uname:'小明',
age:22,
jub(a,b,c){
console.log(`I an ${this.uname} age ${this.age}`)
console.log(a,b,c)
}
}
const obj={
uname:'小红',
age:120
}
call替换
临时替换,除了第一个参数会被替换为函数中的this, 其它参数都会被作为函数的参数传入
调用函数,替换this,传入参数
newobj.jub.call(obj,1,2,3)
apply替换
临时替换,第一个参数替换为函数的this,数组会打散后作为函数的参数,只接收两个参数,多余的没用
调用函数,替换this,打散数组传入作为参数,所以第二参数必须是数组,传非array/object的参数会报错
newobj.jub.apply(obj,[1,2,3])
bind替换
永久替换。注意,bind不调用函数,而是创建一个新的函数,并返回这个新的函数,需要自己手动调用,,
参数和上面的call一样第一个参数会作为这个新的函数的thsi,后面的作为参数传入
const clone =newobj.jub.bind(obj,1,2,3)
clone()