首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何修复这个在JavaScript中完成的对象的“引用网格”?

我如何修复这个在JavaScript中完成的对象的“引用网格”?
EN

Stack Overflow用户
提问于 2015-03-22 21:41:32
回答 1查看 83关注 0票数 1

我试图在JavaScript中建立一个3x3的“块”对象网格,每个网格都通过4个方向参数“下面”、“左”、“上面”和“右”包含对它旁边的块的引用。问题是由于JavaScript对象构造的性质,我在要定义的第一个块中得到了许多未定义的“块”引用。

下面是我正在努力实现的目标的可视化:

代码语言:javascript
复制
    [00][01][02]
    [10][11][12]
    [20][21][22]

这是我的代码:

代码语言:javascript
复制
    // 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);

所以,例如,打电话

代码语言:javascript
复制
    block00.below

将返回一个未定义的值,但我希望它返回block10。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-22 22:12:24

在将引用分配给对象之前,您需要构造它们。那是没有办法的。

这样做的一个简单方法是从构造函数中移除belowright参数,并在构造该块时动态设置这些字段:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29200190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档