Меняется глобальная переменная js

объявляю переменную, но она меняется если изменить другую переменную, как сделать что бы переменная DefaultSetting оставалась в первоначальном виде

var setting, DefaultSetting;
setting = {
  'mose' :1,
  'mose2' :2,
};

DefaultSetting = setting;

setting['mose2'] = 7;

console.log(DefaultSetting);

Нужно DefaultSetting = {"mose": 1,"mose2": 2}


Ответы (1 шт):

Автор решения: Alexander Lonberg

В js объекты передаются по ссылке, и не копируют содержимое.

Такая запись

DefaultSetting = setting

... просто получила ссылку на setting

var setting, DefaultSetting;
setting = {
  'mose' :1,
  'mose2' :2,
};

// Скопировать на новый объект
DefaultSetting = Object.assign({}, setting);

setting['mose2'] = 7;

console.log(DefaultSetting);

→ Ссылка