[英]JavaScript updating last index class data
我有以下问题。 我有一些对象,当我想获得其中一个项目并更新数据时,它会更新最后的数据。 例如:
var arr = [];
for (var i = 0; i < 8; i++){
var c = new MyClass1(i);
arr.push (c)
}
和MyClass1
(function () {
var score = 0;
function MyClass1(id){
this.id = id;
this.x = 100;
//some code. not important
}
var p = MyClass1.prototype;
p.updateScore = function (s){
score = s;
}
window.MyClass1 = MyClass1;
}());
和返回其中一个类的函数
var getMyClassesById = function(/* int */ id){
var size = arr.length;
for (var i = 0; i<size; i++){
if (id == arr[i].id){
return arr [i];
}
}
}
最后我正在调用函数并希望更新分数
getMyClassesById(1).updateScore (122);
它会更新最后一个索引项目得分,并调用最后一项“updateScore”函数...为什么? 但当我改变其他一些属性时,它的更改正确,例如“x”。 我无法理解这里有什么不正确的原型?
您的变量score
未定义为MyClass
的成员 - 它仅在闭包范围内定义。 您的代码将起作用,但MyClass
所有实例只有1“得分”。
如果得分应该是MyClass
一部分,那么移动它
function MyClass1(id){
this.id = id;
this.x = 100;
this.score = 0
//some code. not important
}
并更新方法:
var p = MyClass1.prototype;
p.updateScore = function (s){
this.score = s;
}
(function () { function MyClass1(id){ this.id = id; this.x = 100; this.score = 0; //some code. not important } var p = MyClass1.prototype; p.updateScore = function (s){ this.score = s; } window.MyClass1 = MyClass1; }()); var arr = []; for (var i = 0; i < 8; i++){ var c = new MyClass1(i); arr.push (c) } var getMyClassesById = function(/* int */ id){ var size = arr.length; for (var i = 0; i<size; i++){ if (id == arr[i].id){ return arr [i]; } } } getMyClassesById(1).updateScore (122); console.log(arr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.