gpt4 book ai didi

javascript - 如何在不使用 bind() 的情况下为另一个函数内部的函数设置 'this' 值?

转载 作者:行者123 更新时间:2023-12-02 16:54:29 25 4
gpt4 key购买 nike

目标:我的目标是调用 clientData 对象的 setUserName 方法,使得属性:fullName 设置为正确的值。

我所做的:我尝试了以下代码:

getUserInput.call(clientData,"My","Name",clientData.setUserName)

我认为通过这样做,getUserInput()函数内的this值将被设置为我的对象clientData,它做过。此外,我认为 getUserInput(){} 内的所有代码都可以访问此修改后的 this 值。因此,沿着这个思考过程,我认为由 callback() 访问的 this 值也将是 clientData。不幸的是,callback() 中的代码仍在访问 windowthis 值。我不懂为什么。

我的解决方法是将 setUserName 绑定(bind)到 clientData。有没有另一种方法可以在不修改 clientDatagetUserInput() 的情况下实现我的目标?

var clientData = {
fullName: "Not Set",
setUserName: function (firstName, lastName) {
this.fullName = firstName + " " + lastName;
}
};

function getUserInput(firstName, lastName, callback) {
callback(firstName, lastName);

}

getUserInput("My", "Name", clientData.setUserName.bind(clientData));
console.log (clientData.fullName);
console.log (window.fullName);

最佳答案

您的代码实际上并未绑定(bind) getUserInputFunction.prototype.bind() 返回一个带有绑定(bind) this 值的新函数,并将其作为回调参数传递。

关于javascript - 如何在不使用 bind() 的情况下为另一个函数内部的函数设置 'this' 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287530/

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