gpt4 book ai didi

javascript - JS 中从其他对象借用函数

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

我有以下代码:

var gameController = {
scores: [20, 34, 55, 46, 77],
avgScore: 112,
players: [
{name: "Ruth", playerId: 100, age: 22},
{name: "Shawnee", playerId: 101, age: 21}
]
};
var appController = {
scores: [900, 845, 809, 950],
avgScore: null,
avg: function () {
var sumOfScores = this.scores.reduce(function (prev, cur, index, array) {
return prev + cur;
});

this.avgScore = sumOfScores / this.scores.length;
}
};
gameController.avgScore = appController.avg();
console.log(gameController.avgScore);

我尝试借用appController中定义的avg方法来为gameController进行计算。我明白了gameController.avgScore = appController.avg();之后,avg方法中的这个关键字仍然会指向appController,因为avg方法是由appController调用的,所以我希望gameController中的avgScore应该保持不变,但输出是未定义的,为什么?

最佳答案

avg 不返回任何内容,因此它隐式返回 undefined。您基本上是在执行 gameController.avgScore = undefined;

如果您想将 avg 方法应用于 gameController,您可以使用 .call :

appController.avg.call(gameController);

更好的方法可能是将 avg 作为独立函数,接受数字数组作为输入(参数)并返回平均值。

关于javascript - JS 中从其他对象借用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457919/

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