为什么最后输出的结果是jack call函数调用后不应该改
javascript吧
全部回复
仅看楼主
level 1
水原千鹤º
楼主
为什么最后输出的结果是jack call函数调用后不应该改变了this指向吗
2020年10月11日 05点10分
1
level 11
夜深不知梦
MDN上有描述
bound函数在被调用的时候,实际调用形式是原目标函数.call(boundThis)
所以你这里func.call实际调用的是obj.func.call(obj)
2020年10月12日 00点10分
2
水原千鹤º
那call(obj2)里的obj2不应该改变了this指向吗 让结果等于jay
2020年10月12日 09点10分
level 12
丶影-奈斯
我没记错的话bind()方法 会返回新函数 也就是说不是obj.func 那个函数了 你在fnc.call不就没用了 应该是这么回事的 你去看下bind的实现
call的也可以看看
2020年10月12日 10点10分
3
level 13
BSPR0002
bind 可以看成是 js 引擎根据被 bind 的函数生成一个新的函数,执行这个函数的时候将原函数的 this 设为 bind 的对象并执行。你不断地 bind 亦或者是 call 等等,就等于是在一个球上面不断地包外皮,而执行的时候就等于把这个球一层层拆开,取最靠近核心的那一层。所以其实不论你修改 this 的指向多少层,都只有最开始的那一层生效。bind … bind call
2020年10月13日 02点10分
4
1