Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这与javascript中的对象有关_Javascript - Fatal编程技术网

这与javascript中的对象有关

这与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

我看到了一个令我困惑的代码。我知道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 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那样调用吗?调用类型是否错误??