gpt4 book ai didi

javascript - 更改对象的属性也会影响另一个对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:01 25 4
gpt4 key购买 nike

问题:当我更改多边形 poly2时,它也会更改另一个多边形的多边形 poly!!

为什么改变一个也会改变另一个,我们如何解耦它们

console.log(poly.getPoints()[1].x);  // 100

// Make a change to `poly2`
poly2.setPoints(poly.getPoints());
poly2.getPoints()[1].x=200

console.log(poly.getPoints()[1].x); // 200 (both poly and poly2 are affected!)

jsfiddle: http://jsfiddle.net/8hFyv/

最佳答案

poly2.setPoints(poly.getPoints());

这是你的问题。点数组是完全相同的对象。

由于您的数组中有数组,slice(0) 技巧将不起作用,您需要深度复制。

幸运的是,您使用的是 jQuery,它有一个方法可以做到这一点。

将上面的行替换为:

poly2.setPoints($.extend(true, [], poly.getPoints()));

关于javascript - 更改对象的属性也会影响另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14063406/

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