gpt4 book ai didi

javascript - 为什么.call/.bind(从第二次开始)方法忽略传递给它的 "this"上下文

转载 作者:行者123 更新时间:2023-11-29 19:22:17 24 4
gpt4 key购买 nike

请解释为什么 .call/.bind(从第二次开始)方法忽略传递给它的“this”上下文。背后的原因是什么?

  var f1= function(){
console.log(this.name);
};

var a ={name:'sedhu'};
var b= { name:'raja' };

var f2 = f1.bind(a);
f2.call(b);

var f3 = f2.bind(b);
f3();

实际输出:“sedhu”,其中预期输出为“raja”。

http://jsfiddle.net/sedhuait/uz52ymwn/2/

最佳答案

.bind() 函数返回一个函数,该函数在调用目标函数时将始终覆盖 this 的值。一旦您获得了绑定(bind)函数,它就会始终使用该值,而不管它是如何被调用的。

因此,您从 .bind() 得到的是一个像这样(大部分;不完全)工作的函数:

function bindResult() {
return originalFunction.call(valueForThis, arguments.slice(0));
}

该函数不关心 this 在它自己的调用上下文中的值是什么。它总是使用您要求的值。 (毕竟,这就是 .bind() 的全部要点。)

关于javascript - 为什么.call/.bind(从第二次开始)方法忽略传递给它的 "this"上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com