29.04.2015, 14:31
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
какая вообще логическая связь между мапами и созданием приватных полей класса обьяснит кто нибудь?
|
С мапами - никакой. В WeakMap можно хранить пары "инстанс - набор приватных полей" без утечек памяти.
|
|
29.04.2015, 17:39
|
Интересующийся
|
|
Регистрация: 27.04.2015
Сообщений: 18
|
|
Сообщение от Erolast
|
В WeakMap можно хранить пары "инстанс - набор приватных полей" без утечек памяти.
|
Ну и какие же они приватные, если к ним есть доступ через weakmap?
|
|
29.04.2015, 19:00
|
Профессор
|
|
Регистрация: 24.04.2015
Сообщений: 183
|
|
Сообщение от Erolast
|
В WeakMap можно хранить пары "инстанс - набор приватных полей" без утечек памяти.
|
А, все понял, хммм. можно попробовать, но не вижу причин. В моем способе все хранится в свойстве __privates__ и ни каких проблем нет.
|
|
29.04.2015, 19:06
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
UIjs, а почему у тебя нет сахара для protected свойств, т.е. доступ внутри класса и дочерних классов. Это очень удобная абстракция
|
|
29.04.2015, 19:15
|
Профессор
|
|
Регистрация: 24.04.2015
Сообщений: 183
|
|
kobezzza, потому что это сильная накладка на производительность, их все нужно биндить к каждому инстансу, вот щас Class примерно на 3% медленнее обычных обьектов не наследованых. А как сделать такие же быстрые протектед я не знаю... правда не знаю
то есть чтобы можно было писать вот так this.protected.say() и надо чтобы this сохранялся, выходит придется биндить при инстанцировании каждого инстанса. но при том если обьект this.protected наследует от this.protected родительского класса, то тогда надо перебиндивать? короче я не совсем понимаю как такое провернуть(
Последний раз редактировалось UIjs, 29.04.2015 в 19:17.
|
|
29.04.2015, 19:17
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от UIjs
|
kobezzza, потому что это сильная накладка на производительность, их все нужно биндить к каждому инстансу, вот щас Class примерно на 3% медленнее обычных обьектов не наследованых. А как сделать такие же быстрые протектед я не знаю... правда не знаю
то есть чтобы можно было писать вот так this.protected.say() и надо чтобы this сохранялся, выходит придется биндить при инстанцировании каждого инстанса.
|
Забей, самый простой и наглядный способ:
_myProtectedMethod
Это я так шуткую
Цитата:
|
то есть чтобы можно было писать вот так this.protected.say() и надо чтобы this сохранялся, выходит придется биндить при инстанцировании каждого инстанса. но при том если обьект this.protected наследует от this.protected родительского класса, то тогда надо перебиндивать? короче я не совсем понимаю как такое провернуть(
|
А нельзя заюзать прокси, чтобы налету проксить нужные вызовы?
|
|
29.04.2015, 19:20
|
Профессор
|
|
Регистрация: 24.04.2015
Сообщений: 183
|
|
а, точно, че туплю))))))) подчеркивание же и есть протектед просто я могу сделать быстренько переименовывать их убирая подчеркивание а потом снова ставя, это ж вообще не накладно? а как тогда их обьявлять? короче лучше просто подчеркиванием делать и все)
|
|
29.04.2015, 19:30
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
есть протектед просто я могу сделать быстренько переименовывать их убирая подчеркивание а потом снова ставя, это ж вообще не накладно?
|
Это магия, не делай так) Лучше оставь подчеркивание или поиграйся с Proxy, мне кажется там можно прикольно сделать: ловить событие "нет такого метода или свойства" и задавать метод родителя с нужным this.
// Псевдокод
this.protected = {
__noSuchMethod__: (name, args) => this.super[name].apply(this, args)
};
Последний раз редактировалось kobezzza, 29.04.2015 в 19:43.
|
|
29.04.2015, 20:07
|
Интересующийся
|
|
Регистрация: 27.04.2015
Сообщений: 18
|
|
Сообщение от kobezzza
|
ловить событие "нет такого метода или свойства" и задавать метод родителя с нужным this.
|
И причем тут протектед?
UPD Вообще, это и безо всякого прокси можно реализовать.
|
|
29.04.2015, 21:07
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от nondeterminism
|
И причем тут протектед?
UPD Вообще, это и безо всякого прокси можно реализовать.
|
Протектед просто как пример. Прокси экономят память и не занимают времени при инициализации объекта, а для быстрого доступа, то при первом обращении можно кешировать свойство и логика тут остаётся прозрачной.
|
|
|
|