Здесь я обнаружил интересную вещь, но не знаю, почему это происходит.

Я создаю

var Person = new Object;

var billy = Person;
var emily = Person;

потом я присваиваю свойство name для emily

 emily.name = "emily"

Когда я проверяю hasOwnProperty(name) для billy и Person, я получаю true. Когда я проверяю billy.name и Person.name, я получаю "emily".

Почему, давая Эмили имя, вы задаете всем свойство name и присваиваете ему одно и то же значение?

Ответы (2)

Персона - это объект

var Person = {}

Вы даете billy и emily копию адреса объекта, принадлежащего Person

.
var billy = Person;

Билли, вы смотрите эти свойства в этом месте в памяти.

var emily = Person;

Эмили, вы смотрите эти свойства в этом месте в памяти.

В этой части оба наблюдают один и тот же объект в одном и том же месте памяти. Когда этот объект изменяется (доступ Person, billy или emily), все видят один и тот же измененный объект.

var Person = address Ox27382738
var bily = address(Person)
var emily = address(Person)

Это происходит потому, что у вас есть один объект и вы создаете разные ссылки на этот объект.

var Person = new Object;

Эта строка создает новый объект и присваивает Person ссылку на этот объект.

var billy = Person;
var emily = Person;

Приведенные выше две строки просто создают новые ссылки billy и emily на объект, созданный ранее. Таким образом, все три ссылки (Person, Billy, Emily) указывают на один и тот же объект.

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

В данном случае

emily.name == billy.name == Person.name

2022 WebDevInsider