Исходный объект, затронутый уменьшением изменений в переменной клона - PullRequest
0 голосов
/ 14 мая 2018

У меня есть код ниже, каждый раз, когда его get уменьшает его, ссылаясь на мой же массив, как решить эту проблему

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] значение

1 Ответ

0 голосов
/ 14 мая 2018

Используйте метод dojo/_base/lang .clone () в oroder, чтобы создать клон объекта obj, затем сделайте все, что захотите, до последнего, чтобы исходный объект не был затронут,

ПРИМЕЧАНИЕ: бесполезно удалять ключ proto , поскольку он определяет прототип вашего объекта, см. здесь

Нижерабочий фрагмент

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...