Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 29.04.2015, 14:31
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
какая вообще логическая связь между мапами и созданием приватных полей класса обьяснит кто нибудь?
С мапами - никакой. В WeakMap можно хранить пары "инстанс - набор приватных полей" без утечек памяти.
Ответить с цитированием
  #52 (permalink)  
Старый 29.04.2015, 17:39
Интересующийся
Посмотреть профиль Найти все сообщения от nondeterminism
 
Регистрация: 27.04.2015
Сообщений: 18

Сообщение от Erolast
В WeakMap можно хранить пары "инстанс - набор приватных полей" без утечек памяти.
Ну и какие же они приватные, если к ним есть доступ через weakmap?
Ответить с цитированием
  #53 (permalink)  
Старый 29.04.2015, 19:00
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

Сообщение от Erolast
В WeakMap можно хранить пары "инстанс - набор приватных полей" без утечек памяти.
А, все понял, хммм. можно попробовать, но не вижу причин. В моем способе все хранится в свойстве __privates__ и ни каких проблем нет.
Ответить с цитированием
  #54 (permalink)  
Старый 29.04.2015, 19:06
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

UIjs, а почему у тебя нет сахара для protected свойств, т.е. доступ внутри класса и дочерних классов. Это очень удобная абстракция
__________________
kobezzza
code monkey
Ответить с цитированием
  #55 (permalink)  
Старый 29.04.2015, 19:15
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

kobezzza, потому что это сильная накладка на производительность, их все нужно биндить к каждому инстансу, вот щас Class примерно на 3% медленнее обычных обьектов не наследованых. А как сделать такие же быстрые протектед я не знаю... правда не знаю

то есть чтобы можно было писать вот так this.protected.say() и надо чтобы this сохранялся, выходит придется биндить при инстанцировании каждого инстанса. но при том если обьект this.protected наследует от this.protected родительского класса, то тогда надо перебиндивать? короче я не совсем понимаю как такое провернуть(

Последний раз редактировалось UIjs, 29.04.2015 в 19:17.
Ответить с цитированием
  #56 (permalink)  
Старый 29.04.2015, 19:17
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от UIjs Посмотреть сообщение
kobezzza, потому что это сильная накладка на производительность, их все нужно биндить к каждому инстансу, вот щас Class примерно на 3% медленнее обычных обьектов не наследованых. А как сделать такие же быстрые протектед я не знаю... правда не знаю

то есть чтобы можно было писать вот так this.protected.say() и надо чтобы this сохранялся, выходит придется биндить при инстанцировании каждого инстанса.
Забей, самый простой и наглядный способ:

_myProtectedMethod


Это я так шуткую

Цитата:
то есть чтобы можно было писать вот так this.protected.say() и надо чтобы this сохранялся, выходит придется биндить при инстанцировании каждого инстанса. но при том если обьект this.protected наследует от this.protected родительского класса, то тогда надо перебиндивать? короче я не совсем понимаю как такое провернуть(
А нельзя заюзать прокси, чтобы налету проксить нужные вызовы?
__________________
kobezzza
code monkey
Ответить с цитированием
  #57 (permalink)  
Старый 29.04.2015, 19:20
Профессор
Отправить личное сообщение для UIjs Посмотреть профиль Найти все сообщения от UIjs
 
Регистрация: 24.04.2015
Сообщений: 183

а, точно, че туплю))))))) подчеркивание же и есть протектед просто я могу сделать быстренько переименовывать их убирая подчеркивание а потом снова ставя, это ж вообще не накладно? а как тогда их обьявлять? короче лучше просто подчеркиванием делать и все)
Ответить с цитированием
  #58 (permalink)  
Старый 29.04.2015, 19:30
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
есть протектед просто я могу сделать быстренько переименовывать их убирая подчеркивание а потом снова ставя, это ж вообще не накладно?
Это магия, не делай так) Лучше оставь подчеркивание или поиграйся с Proxy, мне кажется там можно прикольно сделать: ловить событие "нет такого метода или свойства" и задавать метод родителя с нужным this.

// Псевдокод
this.protected = {
    __noSuchMethod__: (name, args) => this.super[name].apply(this, args)
};
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 29.04.2015 в 19:43.
Ответить с цитированием
  #59 (permalink)  
Старый 29.04.2015, 20:07
Интересующийся
Посмотреть профиль Найти все сообщения от nondeterminism
 
Регистрация: 27.04.2015
Сообщений: 18

Сообщение от kobezzza
ловить событие "нет такого метода или свойства" и задавать метод родителя с нужным this.
И причем тут протектед?

UPD Вообще, это и безо всякого прокси можно реализовать.
Ответить с цитированием
  #60 (permalink)  
Старый 29.04.2015, 21:07
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от nondeterminism Посмотреть сообщение
И причем тут протектед?

UPD Вообще, это и безо всякого прокси можно реализовать.
Протектед просто как пример. Прокси экономят память и не занимают времени при инициализации объекта, а для быстрого доступа, то при первом обращении можно кешировать свойство и логика тут остаётся прозрачной.
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Знаменитая функция Class учавствует в фреймворке ui2/0 __он_самый__ Оффтопик 3 29.12.2014 13:19
Унылого треша тред megaupload Оффтопик 648 17.06.2014 14:31
AJAX функция для новых html-элементов broadcast77 AJAX и COMET 25 03.03.2014 14:01
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Как работает функция Class godofjavascript Оффтопик 58 17.12.2012 09:49