147 字
1 分钟
JS中连续bind()多次的结果
题目
连续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多次的结果/