Мне просто интересно, почему все говорят использовать WeakMap над Symbol для создания частных членов в классе javascript.создание частных членов на классе es6
Что лучше о:
const NAME = new WeakMap();
class foo {
constructor(name){
NAME.set(this, name);
}
get name(){
return NAME.get(this);
}
}
против:
const NAME = Symbol();
class foo {
constructor(name){
this[NAME] = name;
}
get name(){
return this[NAME];
}
}
есть ли улучшение скорости или улучшение памяти с помощью WeakMap? Идея иметь отражение, доступное для использования при использовании Symbol для меня, была бы победой для использования Symbol. Итак, я думаю, мой вопрос - это просто почему WeakMap над Symbol?
Thanks
Правильно, и я приравнять Object.getOwnPropertySymbols к рефлексии и так IMO они все еще частные же, как и члены C#/Java может быть помечен как личный. Точно так же, как вы можете использовать отражение в C# или Java для установки частных членов, я не вижу проблемы, что вы можете сделать то же самое в javascript. Является ли это основной причиной отсутствия отвращения к использованию Symbol для частных членов? – weagle08
@ weagle08 Я думаю, что это главная причина. Ну, в случае не принадлежащих им объектов некоторые люди могут думать, что хранение данных в них является морально неправильным. – Oriol