gpt4 book ai didi

javascript - 为什么使用绑定(bind)函数(javascript)后属性未定义?

转载 作者:行者123 更新时间:2023-11-30 09:18:02 24 4
gpt4 key购买 nike

这是指向 function.prototype.bind() 的 MDN 解释的链接 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

我添加了一些 console.logs 来帮助我了解发生了什么。

var module = {
x: 42,
getX: function() {
return this.x;
}
};

var boundGetX = module.getX.bind(module);

console.log(boundGetX());
console.log(boundGetX().x);
console.log(boundGetX.x);

第一个 console.log 返回

42

这对我来说很有意义。

然而,第二个和第三个console.logs返回

undefined

这是为什么呢?该函数如何能够查看和记录模块属性 x,其存储值为 42,而 x 的 boundGetX 值未定义?

在使用绑定(bind)函数之后,boundGetX 不是现在指向 module.getX 并且 'this' 变量指向模块吗?

为什么 boundGetX.x 不指向 module.x?当 boundGetX.x 未定义时,它如何能够成功记录 module.x 的值?

最佳答案

当你打电话时:

console.log(boundGetX().x);

你本质上是在调用:

this.x.x

实际上在做什么:

(42).x // there's no property x on the number 42

并且由于属性 x 上没有属性 x,所以它是 undefined

关于javascript - 为什么使用绑定(bind)函数(javascript)后属性未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53695595/

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