三个改变this指向的方法

本文详细解析JavaScript中的call、apply与bind方法。call将函数调用绑定到特定对象并立即执行,apply同样绑定但参数以数组形式传递,bind创建绑定特定对象的新函数但不立即执行。

作用于一个函数或者对象的方法
call 召唤过来
apply 提供给
bind 绑定
在call方法中,是把参数放进去依次传递,参数可以有多个;在apply方法中,是把参数放在一个数组中传递,所以参数只有两个;
所以当你不知道参数数量时,就使用apply方法,先把参数push进一个数组里,然后再进行传递,
当知道参数数量时,用call和apply都可以;
obj1.a.call(obj2,name,age)
obj1.a.apply(obj2,[name,age])
let obj1={
name:“john1”,
say:function(){
console.log(this.name)//john2 原本this指向的是obj1,但是这里使用call把obj2召唤过来使用,
让其指向call的第一个参数,这里this指向了obj2
console.log(this)//{name: “john2”}
}
}
let obj2={
name:“john2”
}
obj1.say.call(obj2)

    obj1.say.apply(obj2)//把obj2的属性提供给obj1使用。
    obj1.name.apply(obj2)//obj1.name.apply is not a function,这种写法不行;

    obj1.say.bind(obj2)();//前一个是绑定,后边一个()是执行;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值