创建更新对象字段的函数的正确方法是什么?下面的方式,似乎什么都没有发生:

function adjmatrix(neighbors){
    this.neighbors = neighbors
    this.sum = 0
}

adjmatrix.prototype.update = function(){
    this.neighbors.forEach(function(a){a.sum += 10})
}

var myMatrix = new adjmatrix([1,2,3])
myMatrix.update()
print(myMatrix.sum) //Expect a value of 30, I get 0.


对Javascript来说是一种新事物,因此我对范围界定和工作原理尚不清楚。谢谢你的帮助。我正在命令行中通过d8运行我的程序。

最佳答案

为了更新对象的“ sum”属性,您的“ update”方法应如下所示:

adjmatrix.prototype.update = function(){
    var matrix = this;
    this.neighbors.forEach(function(a){matrix.sum += 10})
}


如果您想总结“ neighbors”值,则如下所示:

adjmatrix.prototype.update = function(){
    var matrix = this;
    this.neighbors.forEach(function(a){ matrix.sum += a; })
}


.forEach()调用传入数组的每个值,每个调用一次。

09-25 15:06