gpt4 book ai didi

Javascript underscore.js-我必须使用上下文参数和 'this' 吗?

转载 作者:行者123 更新时间:2023-11-28 00:10:28 24 4
gpt4 key购买 nike

在我正在观看的下划线教程中,此代码用于演示 _.each:

var people = {
names: ['Craig', 'John', 'Dan', 'Elijah'],
getMessage: function(name) {
return 'Hello there, ' + name + '!';
}
};

_.each(people.names, function(element, index, list) {
console.log(this.getMessage(element))
}, people);

据解释,people 作为 _.each 调用的上下文传递,以将 this 绑定(bind)到 people object 但我不明白为什么这是必要的。在迭代器函数的主体中,我不能明确地写出 people.getMessage 吗?

喜欢:

_.each(people.names, function(element, index, list) {
console.log(people.getMessage(element));
});

为什么要使用 this 并且必须传递上下文?

最佳答案

就像评论中提到的那样,这不是必需的,但在某些情况下可能很有用。它还使迭代器函数不知道上述范围。它只知道它正在处理具有 getMessage() 方法的对象,并且未链接到闭包中的特定变量。

我能想到的一个例子是能够将其重用于具有相同结构但在范围内未命名为 people 的不同对象。

var people = {
names: ['Craig', 'John', 'Dan', 'Elijah'],
getMessage: function(name) {
return 'Hello there, ' + name + '!';
}
};

var dogs = {
names: ['Jimmy', 'Rufus', 'Woofie', 'Silly'],
getMessage: function(name) {
return 'Woof there, ' + name + '!';
}
};

function logTheMessage(element) {
console.log(this.getMessage(element));
}

_.each(people.names, logTheMessage, people);
_.each(people.names, logTheMessage, dogs);

关于Javascript underscore.js-我必须使用上下文参数和 'this' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952283/

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