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()只有第一次绑定会生效
简单分析🔑

:::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多次的结果/