有这种类型的对象。
在FabricJS画布中创建元素并设置属性:

canvas.forEachObject(function (e) {
        e.hasControls = e.hasBorders = false; //remove borders/controls
        e.isStatic = true;
        e.corners = [false, false, false, false, false];
    });


fitElement.destination.corners[1] = true;
fitElement.origin.corners[3] = true;

console.log(fitElement.destination.corners);
console.log(fitElement.origin.corners);


结果是

[false, true, false, true, false]
[false, true, false, true, false]


为什么更改对象中的一个数组会引起另一个数组的变化?
我做错了什么?
谢谢

最佳答案

只有一种解释:fitElement.destination.cornersfitElement.origin.corners是相同的数组。

在代码中的某个位置,您将一个数组或对象分配给另一个数组或对象,因此您要引用内存中的相同数据,例如:

var vector5 = new Vector5(); // of my invention, just to explain the concept

fitElement.origin.corners = vector5;
fitElement.destination.corners = vector5;


要么:

fitElement.origin.corners = vector5;
fitElement.destination.corners = fitElement.origin.corners;


或加强嵌套:

fitElement.origin.corners = vector5;
fitElement.destination = fitElement.origin;

09-19 13:12