Идея в том, что вы сохраняете частный экземпляр Symbol. Это не помешает вам волшебным образом перезаписать свойства.
Один раздел вашего кода может создать символ:
let id = Symbol("id");
Затем они могут использовать этот символ как свойство объекта: `
let user = {
[id]: 123,
};
Однако другой раздел вашего кода не сможет перезаписать свойства , если у них нет доступа к тому же экземпляру символа .
Например , если другой фрагмент кода создает свой собственный символ, свойство, которое они извлекают, будет undefined
:
let id2 = Symbol("id");
console.log(user[id2]); // undefined
Вы должны изолировать этот экземпляр символа от остальной части кода.
Современный способ сделать это - поместить его в модуль ESM, а не export
переменную.
В вашем случае похоже, что id
- глобальная переменная. Это вам не поможет, потому что вы не можете гарантировать, что никто не будет использовать эту переменную.