我想创建一个2D对象数组,然后设置一个元素属性的值。
var maze=new Maze(3);
maze.resetField();
function Maze(size){
this.size=size;
this.xPos=0;
this.yPos=0;
this.field=[];
this.resetField=function(){
this.field=[];
this.xPos=0;
this.yPos=0;
var row;
var newWord;
var newPlace;
for(rowCtr=0;rowCtr<this.size;rowCtr++){
row=[];
for(r=0;r<this.size;r++){
newWord="rowCtr"+rowCtr+"r"+r;
newPlace=Place(newWord);
row[r]=newPlace;
}
this.field.push(row);
}
treasureX=1;
treasureY=1;
this.field[treasureY][treasureX].word="treasure";
}
}
function Place(word){
this.word=word;
this.walls=[];
this.addWall=function(route){
this.walls.add(route);
}
}
代码到达此行时:
this.field[treasureY][treasureX].word="treasure";
我收到此错误:
Uncaught TypeError: Cannot set property 'word' of undefined
但是,由于我已经使用嵌套的for
循环初始化了所有数组元素,因此this.field[treasureY][treasureX]
的{{1}}实例不应该被定义为Place
吗?
答案 0 :(得分:3)
我建议将new
用于<!DOCTYPE html>
<html>
<body>
<style>
input{
border:3px solid red;
width:10px;
}
</style>
<h3>A demonstration of how to access a File Upload Button</h3>
<input type="file" id="myFile">
</body>
</html>
的新实例。
Place
答案 1 :(得分:1)
您必须替换:
newPlace=Place(newWord);
通过
newPlace=new Place(newWord);
如果您不使用new
关键字,变量newPlace
将设置为未定义,因此所有数组元素都将是未定义的。