Javascript копирует объекты по ссылке. Но приведенный ниже код я назначил один объект с нуля. Но другой объект все еще имеет то же значение - PullRequest
1 голос
/ 26 марта 2020

Здесь есть два объекта, user и user1. Пользователь скопирован в user1. Затем пользователю присваивается значение null, но user1 не изменяется.

let user = {
    name : 'Nagendra Kamath',
    age : 22,
    goodMorn(){
        console.log('Good Morning '+ this.name);
    }
};

let user1 = user;

user = null; 


user1.goodMorn(); // even if we have assigned user to null the value of user1 remains same
user.goodMorn();  // throws an error

Скажите, пожалуйста, как это возможно ??

1 Ответ

1 голос
/ 26 марта 2020

Здесь вы создаете объект, который существует в памяти, и ссылку user на этот объект.

let user = {
    name : 'Nagendra Kamath',
    age : 22,
    goodMorn(){
        console.log('Good Morning '+ this.name);
    }
};

Теперь вы назначаете новую ссылку user1 этому же объекту.

let user1 = user;

Теперь вы присваиваете user значение null

user = null;

Но Объект все еще существует, и ссылка на объект user1 также существует, поэтому хорошо, что

user1.goodMorn(); // works, because it's still a reference to the object.
user.goodMorn();  // throws an error, because it's value is null

Важная вещь: user1 не является ссылкой на user, потому что user также является ссылкой. user1 является ссылкой на исходный объект в памяти, user1 является ссылкой, аналогичной ссылке user

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...