我有一个下面的代码,每次减少它引用我的相同数组后,如何解决这个
var myobjData = data[0];
var obj = myobjData;
var arr = ['index', 'label', '__id', 'id', '__parent', '__proto__'];
var colObjLength = shorten(arr, obj);
function shorten(arr, obj) {
arr.forEach(function(key) {
delete obj[key];
});
console.log(obj);
return obj;
}
由于此代码,data[0]
会受到影响。它不应该影响data[0]
值
答案 0 :(得分:1)
使用oroder中的dojo/_base/lang
.clone()方法创建obj的克隆,然后根据需要执行此操作,这样原始对象就不会受到影响,
注意:删除密钥 proto 是没用的,因为它定义了对象的原型,请参阅here
在工作片段
下面
require(["dojo/_base/lang"], function(lang) {
var arr = ['index', 'label', '__id', 'id', '__parent', '__proto__'];
var obj = new Object();
obj.index = "index";
obj.label = "label";
obj.__id = "1";
obj.id = "id";
obj.__parent = "__parent";
//perform clone
var colObjLength = lang.clone(obj);
colObjLength = shorten(arr,colObjLength);
console.log("Original object",obj);
console.log("Cloned object",colObjLength);
function shorten(arr, obj) {
arr.forEach(function(key) {
delete obj[key];
});
return obj;
}
});

<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
&#13;