gpt4 book ai didi

javascript - 在 forEach 循环中访问它会导致未定义

转载 作者:可可西里 更新时间:2023-11-01 01:21:24 26 4
gpt4 key购买 nike

我在我的类的一个方法中使用 forEach 遍历一个数组。我需要访问 forEach 中类的实例,但 this 未定义。

var aGlobalVar = {};

(function () {

"use strict";

aGlobalVar.thing = function() {
this.value = "thing";
}

aGlobalVar.thing.prototype.amethod = function() {
data.forEach(function(d) {
console.log(d);
console.log(this.value);
});
}
})();

var rr = new aGlobalVar.thing();
rr.amethod();

我这里有一个 fiddle :http://jsfiddle.net/NhdDS/1/ .

最佳答案

在严格模式下,如果您不是通过属性引用调用函数并且没有指定this应该是什么,它是未定义的。

forEach ( spec | MDN ) 允许您说出 this 应该是什么,它是您传递给它的(可选)第二个参数:

aGlobalVar.thing.prototype.amethod = function() {
data.forEach(function(d) {
console.log(d);
console.log(this.value);
}, this);
// ^^^^
}

或者,arrow functions于 2015 年添加到 JavaScript 中。由于箭头关闭了 this,我们可以为此使用一个:

aGlobalVar.thing.prototype.amethod = function() {
data.forEach(d => {
console.log(d);
console.log(this.value);
});
}

关于javascript - 在 forEach 循环中访问它会导致未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445599/

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