这与javascript中的对象有关
我看到了一个令我困惑的代码。我知道this关键字指向全局上下文,这取决于它的调用方式 代码是这与javascript中的对象有关,javascript,Javascript,我看到了一个令我困惑的代码。我知道this关键字指向全局上下文,这取决于它的调用方式 代码是 var gameController = { scores :[20, 34, 55, 46, 77], avgScore:null, players :[ {name:"Tommy", playerID:987, age:23}, {name:"Pau", playerID:87, age:33} ] } var appControl
var gameController = {
scores :[20, 34, 55, 46, 77],
avgScore:null,
players :[
{name:"Tommy", playerID:987, age:23},
{name:"Pau", playerID:87, age:33}
]
}
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;
}
}
令人困惑的是
this.avgScore = sumOfScores / this.scores.length;
我只需要知道这个关键字指向哪个对象。它是指向appController还是gameController
任何帮助都将不胜感激
谢谢我想说的是appController。您可以添加一个console.logthis.players来验证它在appController中是否未定义它属于appController,特别是在调用appController.avg时。您不能严格地假设它为,因为这取决于您如何调用函数appController.avgc,所以我可以调用gameController.avg这样的函数吗?我已经缩进了您的代码,这样嵌套就更容易实现了see@user3609223-否。对象gameController没有名为avg的属性,所以你不能。谢谢。它帮助了我。你看过变量sumofscores的代码了吗?这里给出了this.scores.reduce。它与appController.scores.reduce相同吗?reduce是数组javascript对象的一种方法。两个分数变量都是数组,因此代码是相同的。我可以像gameController.avg那样调用吗?调用类型是否错误??