有这种类型的对象。
在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.corners
和fitElement.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;