Создается впечатление, что у вас создается впечатление, что каждый раз, когда вы получаете доступ к address
, будет назначаться новое и другое значение символа, что неверно.
Все, что вы делаете, - это использование символа для генерацииуникальное значение, а затем вы сохраняете это значение в переменной address
.Это означает, что когда вы используете его снова позже, вы используете тот же символ, который вы создали ранее.Это было бы так, даже если вы не использовали Symbol:
let obj = {}; // Create your object
let address = "some key name";
obj[address] = "123 Bond street";
console.log(obj[address]); // Return '123 Bond street'
// Another dev comes along
obj[address] = "456 Regent street"; // Assigns an address property to your object
console.log(obj[address]); // Your address property has been overwritten
Короче говоря, если вы сохраняете Symbol, вы ничего не делаете, кроме как сохраняете значение, которое гарантированно будет уникальным.Но это не мешает вам использовать его снова и снова.
Более подходящим вариантом использования Symbol
было бы предотвращение создания другим * новым * 1018 другим разработчиком.* ключ к существующему объекту с тем же именем, что и ключи, которые были сделаны из других символов:
let obj = {}; // Create your object
let address = Symbol("some key name");
obj[address] = "123 Bond street";
console.log(obj[address]); // Return '123 Bond street'
// Another dev comes along
let newProp = Symbol("some key name");
obj[newProp] = "456 Regent street"; // Guaranteed unique new key is created
// There is no way the two properties would ever overwrite each other because each
// was created from a different Symbol
console.log(obj[address]);
console.log(obj[newProp]);