| 
	| 
	
	| 
		
	| 
			
			 
			
				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 Вообще, это и безо всякого прокси можно реализовать.
 |  
	
 Протектед просто как пример. Прокси экономят память и не занимают времени при инициализации объекта, а для быстрого доступа, то при первом обращении можно кешировать свойство и логика тут остаётся прозрачной. |  |  |  |