melkaya94
@melkaya94

Как нужно изменить функцию, чтоб значение obj не изменилось?

function doSomethingWithOption(options) {
  var objFromOptions = options.obj;
  objFromOptions.b = 3;
  //функция возвращает undefined;
}

var obj = {a: 1, b: 2};
doSomethingWithOption({obj: obj});
console.log(obj.b); // выведет 3;
  • Вопрос задан
  • 172 просмотра
Решения вопроса 2
@Coder321
Самый простой, но не всегда рабочий, вариант это
var objFromOptions = Object.assign({}, options.obj);

если ваш обьект имеет глубокое ветвление то можно юзнуть какойто плагин для глубокого копирования обьекта.
Так же можно юзнуть
JSON.parse(JSON.stringify(options.obj))
правда в обьекте сохранятся только данные, функции удалятся
Ответ написан
FLUNKEY
@FLUNKEY
самовар
Создать клон объекта?
var objFromOptions = JSON.parse(JSON.stringify(options.obj));

//es6
var objFromOptions = Object.assign({}, options.obj);

//underscore
var objFromOptions = _.extend({}, options.obj);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы