Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
Object.getOwnPropertySymbols, Reflect.ownKeys, скопировать через Object.assign. Их задача — предотвращение перекрытия свойств в пользовательском коде. Впрочем WeakMap тоже не является полностью приватным — при желании можно вытащить дынные, обернув методы прототипа коллекции. По идее, настоящие приватные поля могут появиться в ES7.Object.getOwnPropertyKeys и не планируется.Но мы полностью не спрячем такие поля
Инкапсуляция
findItems()" и не задумываетесь, какой код он вызывает, какие публичные или приватные методы дергает, главное, чтобы он соблюдал соглашение (интерфейс). Инкапсуляция неразрывно связана с, например, полиморфизмом, где метод изменяется, оставляя старое соглашение, но за счет инкапсуляции вас не интересует, что именно внутри него.class Pos {
@x;
@y;
constructor(x,y){
@x = x;
@y = y;
}
}
private, в том числе и в литерале класса, как сахар для WeakMap (хотя для этого дела изначально планировались специальные PrivateMap), но Kevin Smith разделил предложение на 2 куда более узкие и, с моей точки зрения, не такие удачные части — private fields (ссылку на которые привёл выше) и bind operator.
Реализация приватных полей с помощью WeakMap в JavaScript