Javascript привязка объекта

У меня проблема, которую я не могу понять. Я использую книгу js для изучения javascript, и там был пример кода.

let a = {};
let b = a;
b = a["folder"] = {}; // how to understand this?
// after that b = {}, a = {folder: {} }

Пожалуйста, объясните это :(


person Dimitry Dn    schedule 12.02.2021    source источник
comment
Связано: Является ли JavaScript языком передачи по ссылке или по значению?.   -  person Sebastian Simon    schedule 12.02.2021
comment
Короче говоря, {} — это объект в памяти, а a = {} означает, что a теперь указывает на этот объект. Теперь, когда вы делаете b = a, b теперь также указывает на тот же объект. Таким образом, изменение a фактически изменяет объект, и, следовательно, изменяется и b.   -  person Chris G    schedule 12.02.2021


Ответы (1)


Последняя строка в вашем примере оценивается справа налево, сначала присваивая значение a['folder] новому пустому объекту, а затем присваивая значение b равным a['folder'] в качестве ссылки на тот же объект.

Это отменяет ваше первоначальное назначение b = a;

let a = {};
let b = a;
console.log(a === b); // true

b = a["folder"] = {};

console.log(a === b) // false, because b is now a reference to the object assigned to a.folder
console.log(a.folder === b) // true

person pilchard    schedule 12.02.2021