gpt4 book ai didi

javascript - 将作用域传递给 forEach

转载 作者:IT王子 更新时间:2023-10-29 03:06:58 26 4
gpt4 key购买 nike

我正在尝试使用回调方法 addToCount 而不是 forEach 中的匿名函数。但是我无法访问其中的 this.count(返回 undefined)。

function Words(sentence) {
this.sentence = sentence;
this.count = {};
this.countWords();
}

Words.prototype = {
countWords: function() {
var words = this.sentence.split(/\W+/);
words.forEach(this.addToCount);
},
addToCount: function(word) {
word = word.toLowerCase();
if (word == '') return;
if (word in this.count)
this.count[word] += 1;
else
this.count[word] = 1;
}
}

我认为问题在于范围。我怎样才能将 this 传递给 addToCount 或者是否有任何其他方法可以让它工作?

最佳答案

您需要使用 Function#bind 绑定(bind)范围:

words.forEach(this.addToCount.bind(this));

请注意,这并非在所有浏览器中都可用:您应该使用垫片(如上面链接中提供的)将其添加到不支持 Function#bind 的浏览器中.


正如 dandavis 在评论中指出的,您可以将值传递给 Array#forEach 作为回调的上下文:

words.forEach(this.addToCount, this);

关于javascript - 将作用域传递给 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733758/

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