Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
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