gpt4 book ai didi

javascript - 如何修复 JavaScript 中对象的 "reference grid"问题?

转载 作者:行者123 更新时间:2023-11-28 00:28:59 25 4
gpt4 key购买 nike

我正在尝试在 JavaScript 中创建一个由“ block ”对象组成的 3x3 网格,每个对象都包含通过 4 个方向参数“下方”、“左”、“上方”和“右”对其旁边的 block 的引用”。问题是由于 JavaScript 对象构造的本质,我在第一个定义的 block 中得到了很多未定义的“ block ”引用。

这是我想要实现的目标的可视化:

    [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。

谢谢!

最佳答案

您需要先构造对象,然后再分配对它们的引用。没有办法解决这个问题。

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

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;
}

关于javascript - 如何修复 JavaScript 中对象的 "reference grid"问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29200190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com