Javascript 为数组元素赋值';s属性设置所有其他类似元素';财产

Javascript 为数组元素赋值';s属性设置所有其他类似元素';财产,javascript,arrays,Javascript,Arrays,我创建了一个数组和一个名为Block的类。现在,在数组中创建2个对象并将blockArray[0]的x属性更改为不同的数字后,blockArray[1]的x也将更改为类似于blockArray[0]的x值,而不是保留初始值100 我做错了什么?如何更改blockArray[0]的x而不影响数组中的其他对象 编辑: 更新了代码。segments是带有块元素的数组。修复了此问题,谢谢。Norguard和Mark Reed的评论让我找到了错误的代码部分(我忘了在我的帖子中包含) 做: function

我创建了一个数组和一个名为Block的类。现在,在数组中创建2个对象并将blockArray[0]的x属性更改为不同的数字后,blockArray[1]的x也将更改为类似于blockArray[0]的x值,而不是保留初始值100

我做错了什么?如何更改blockArray[0]的x而不影响数组中的其他对象

编辑:
更新了代码。segments是带有块元素的数组。

修复了此问题,谢谢。Norguard和Mark Reed的评论让我找到了错误的代码部分(我忘了在我的帖子中包含)

做:

function Block(){
    this.x = 100;
    this.y = 100;
}

// update canvas
        function UpdateCanvas(){
            // check if game is still on going
            if (!isStopped)
            {
                for(var i = segments.length - 1; i > 0 ; i--)
                {
                    segments[i] = segments[i - 1];
                }

                switch(direction)
                {
                    case "left":
                        segments[0].x = segments[0].x - pixelChange;
                        DrawCanvas();
                        break;
                    case "right":
                        segments[0].x = segments[0].x + pixelChange;
                        DrawCanvas();
                        break;
                    case "up":
                        segments[0].y = segments[0].y - pixelChange;
                        DrawCanvas();
                        break;
                    case "down":
                        segments[0].y = segments[0].y + pixelChange;
                        DrawCanvas();
                        break;
                }
            }
        }

将段[i-1]的引用保存到段[i],而不是保存对象。给我上了一课。

是的,没什么问题,你确定你有问题吗?我的问题还是解决不了。顺便说一句,浏览器是chrome浏览器,但我的代码中没有特定于浏览器的内容:/I我感觉您使用了一个
for
循环来完成此操作。在这种情况下,您会遇到关闭问题。到底什么是闭包问题取决于你在for循环中做了什么。但是你是如何初始化
块数组的呢?发生的情况是,您以某种方式获得了对数组中同一对象的多个引用。我们可以告诉你,如果你给我们看实际的代码。
for(var i = segments.length - 1; i > 0 ; i--){
    segments[i] = segments[i - 1];
}