我创建了一个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}}
答案 0 :(得分:0)
如果您不想分配引用,则必须深度克隆对象。 你可以用jQuery做到这一点:
var flag = jQuery.extend(true, {}, objtvar).defaultPoints;
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;