我有这段代码:
var doors = [];
for(var i = 0; i < 100; i++){
var door = new Door();
door.setDoorNumber(i);
doors.push(door);
};
门的实施是这样的:
Door = function(){
var doorNumber;
Door.prototype.getDoorNumber = function(){
return doorNumber;
};
Door.prototype.setDoorNumber = function(number){
doorNumber = number;
};
输出是这样的:
door[0].getDoorNumber(); // 99
door[1].getDoorNumber(); // 99
door[2].getDoorNumber(); // 99
door[3].getDoorNumber(); // 99
我希望输出为:
door[0].getDoorNumber(); // 0
door[1].getDoorNumber(); // 1
door[2].getDoorNumber(); // 2
door[3].getDoorNumber(); // 3
这笔交易是什么?我假设这是因为js i
正在通过引用传递。获得所需输出的最佳方法是什么?
谢谢!
答案 0 :(得分:4)
目前,您只是创建一个新变量,并为该变量指定0到99。它不是Door
对象的属性。
只需使用this
对其进行限定即可使其正常运行。
Door = function(){
this.doorNumber;
}
Door.prototype.getDoorNumber = function(){
return this.doorNumber;
};
Door.prototype.setDoorNumber = function(number){
this.doorNumber = number;
};