dojo 原始对象受克隆变量中减少更改的影响

hlswsv35  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(142)

下面我有一个代码,每次它get reduce后它引用我的同一个数组,怎么解决这个问题
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]

cyvaqqii

cyvaqqii1#

使用order中的usedojo/_base/lang.clone()方法创建对象的克隆,然后在最后做任何你想做的事情,这样原始对象就不会受到影响。

注意:删除键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>

相关问题