我试图在JavaScript中建立一个3x3的“块”对象网格,每个网格都通过4个方向参数“下面”、“左”、“上面”和“右”包含对它旁边的块的引用。问题是由于JavaScript对象构造的性质,我在要定义的第一个块中得到了许多未定义的“块”引用。
下面是我正在努力实现的目标的可视化:
[00][01][02]
[10][11][12]
[20][21][22]这是我的代码:
// Block variable declarations
var block00;
var block01;
var block02;
var block10;
var block11;
var block12;
var block20;
var block21;
var block22;
// Block object constructor
function block(below, left, above, right){
this.below = below;
this.left = left;
this.above = above;
this.right = right;
}
// Row 1
block00 = new block(block10, null, null, block01);
block01 = new block(block11, block00, null, block02);
block02 = new block(block12, block01, null, null);
// Row 2
block10 = new block(block20, null, block00, block11);
block11 = new block(block21, block10, block01, block12);
block12 = new block(block22, block11, block02, null);
// Row 3
block20 = new block(null, null, block10, block21);
block21 = new block(null, block20, block11, block22;
block22 = new block(null, block21, block12, null);所以,例如,打电话
block00.below将返回一个未定义的值,但我希望它返回block10。
谢谢!
发布于 2015-03-22 22:12:24
在将引用分配给对象之前,您需要构造它们。那是没有办法的。
这样做的一个简单方法是从构造函数中移除below和right参数,并在构造该块时动态设置这些字段:
function block(left, above) {
this.below = null;
this.left = left;
this.above = above;
this.right = null;
if (left) left.right = this;
if (above) above.below = this;
}https://stackoverflow.com/questions/29200190
复制相似问题