求star

开源不易,喜欢请点个star吧

Ocean Han
147 字
1 分钟
JS中连续bind()多次的结果
2022-08-12

题目#

连续bind()多次,输出的值是什么?#

var bar = function(){
    console.log(this.x);
}
var foo = {
    x:3
}
var sed = {
    x:4
}
var func = bar.bind(foo).bind(sed);
func(); //?
 
var fiv = {
    x:5
}
var func = bar.bind(foo).bind(sed).bind(fiv);
func(); //?

答案是 两次都输出3#

TIP

在js中,多次bind()只有第一次绑定会生效

简单分析:key:#

:::tip 结论

  • 后面的bind只能改变上一个bind的this指向,例如foo.bind(obj).bind(obj2)改变的是foo.bind(obj)的指向;最终foo执行绑定的this是由第一次bind决定
  • 因此不管foo执行多少bind,都是第一次bind绑定的对象

:::

JS中连续bind()多次的结果
https://blog.oceanh.top/posts/frontend/连续bind多次的结果/
作者
Ocean Han
发布于
2022-08-12
许可协议
CC BY-NC-SA 4.0
最后修改时间
2024-08-10 10:08:49