Javascript对象属性在分配时更新

时间:2017-01-18 13:43:29

标签: javascript arrays javascript-objects

我创建了一个JavaScript对象,如下所示 -

var objtvar = {defaultPoints: [[0,0],[0,-10],[2.5, -10], [2.5, -10],[5, -10],[5,0]]}

我需要将 defaultPoints 属性分配给另一个数组并修改这个新数组。但是,在更新此新数组时,对象属性也会更新。

我希望对象属性不会改变。

代码 -

var objtvar = {defaultPoints: [[0,0],[0,-10],[2.5, -10], [2.5, -10],[5, -10],[5,0]]};
var flag = objtvar.defaultPoints;
flag[5][1] = 9;

这将更新标志数组和 defaultPoints 属性中的值。我不希望房产得到更新。

更新的解决方案 - 我们可以使用@Nimrod Shory建议的jquery扩展,或使用像这样的纯{JS}实现<{3}}

1 个答案:

答案 0 :(得分:0)

如果您不想分配引用,则必须深度克隆对象。 你可以用jQuery做到这一点:

var flag = jQuery.extend(true, {}, objtvar).defaultPoints;

&#13;
&#13;
var objtvar = {defaultPoints: [[0,0],[0,-10],[2.5, -10], [2.5, -10],[5, -10],[5,0]]};
var flag = jQuery.extend(true, {}, objtvar).defaultPoints;

flag[0][1] = 3;

$('#objtvar').text('objtvar[0][1] = ' + JSON.stringify(objtvar.defaultPoints[0][1]));
$('#result').text('flag[0][1] = ' + JSON.stringify(flag[0][1]));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="objtvar"></div>
<div id="result"></div>
&#13;
&#13;
&#13;