 
			
				11.08.2015, 23:15
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Метод toString() в пользовательском компоненте и проблемы с ним
			 
			
		
		
		
		Где-то в недрах метода addListener 
http://docs.sencha.com/extjs/5.1/5.1...od-addListener
происходит обращение к массиву, в качестве индекса используя SCOPE. Хотя SCOPE это вообще-то объект. Так ведь?
 
Например 
 
namedScope = scope && namedScopes[scope];
 
У меня в некоторых компонентах есть метод toString(), который при таком обращении к массиву неявно вызывается. И вот когда, этот метод выдает пустую строку, то при обращении к массиву появляется ошибка:
 
Cannot convert object to primitive value
 
И теперь вопрос, что собственно делать-то??? 
 
У меня в итоге методы on() не работают.  
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 00:16
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 без статуса 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.05.2012 
					
					
					
						Сообщений: 8,219
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		khusamov, 
Не ?
 
try {
  namedScope = scope && namedScopes[scope];
} catch (e) {
  namedScope =false;
}
Наверно не то 
=============== 
Вот что-то  http://docs.sencha.com/extjs/4.2.1/#...-method-handle 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Deff, 12.08.2015 в 00:41.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 01:39
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Вообще-то приведенный мною код это часть метода addListener  
а хак не хочется делать, так как эта проблема не только этого метода... там много где таких мест... 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 01:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 без статуса 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.05.2012 
					
					
					
						Сообщений: 8,219
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 khusamov, 
Ну интуитивно, переопределить метод toString() именно для этого конкретного приложения 
_ToString(), в нем и забодать проверки 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 13:43
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	
		Ну интуитивно, переопределить метод toString() именно для этого конкретного приложения 
_ToString(), в нем и забодать проверки
	 | 
 
	
 
 Не очень понял. 
 
Возможно вы про такой вариант. Если городить свои toString(), то называть их иначе, чтобы с не совпали с системным названием, например toSvgString(), тогда они не будут вызываться. Так вы имели ввиду?
 
Но тут проблемки: 
 
1) я уже наплодил кучу таких методов и у меня уже есть программа, которая использует эту библиотеку (переименование мне может дорого стоить в случае переименовывания по смыслу выходной строки), 
 
2) не очень хотелось бы лишаться такого красивого и лаконичного названия метода (хотя это не существенно по большому счету, но проблема не в JavaScript, а в Ext JS, где вот так, на мой взгляд не корректно, достают значения массивов).  
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось khusamov, 12.08.2015 в 13:45.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 14:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.08.2013 
					
					
					
						Сообщений: 214
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Сделайте так чтоб toString не возвращал пустую строку.. или откажитесь от toString(). 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 16:02
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Сделайте так чтоб toString не возвращал пустую строку.. или откажитесь от toString().
	 | 
 
	
 
 Хм... а что возвращать? Я конечно попробую возвращать null, undefined... если это поможет, то еще куда ни шло. Но возвращать непустую строку, когда надо возвратить пустую это вряд-ли у меня получится.  
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 18:00
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.08.2013 
					
					
					
						Сообщений: 214
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ну для инстансов можно вот такую строку возвращать например "{}". Или например так "MyClassName: {}" 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 18:02
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.08.2013 
					
					
					
						Сообщений: 214
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Я не знаю для чего вы завязались на toString() так что гадать тяжело. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 21:04
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 как для чего? Для сериализации объектов. Мне нужно объекты в строку превращать. Например Path из SVG это строка с командами рисования пути. И если в Path нет сегментов, то строка должна быть пустой. 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
	
 
 
 
 
 
	| Тема | 
	Автор | 
	Раздел | 
	Ответов | 
	Последнее сообщение | 
 
	| глюк форума | 
	Gvozd | 
	Сайт Javascript.ru | 
	11 | 
	18.03.2009 14:37 | 
 
 
 
 
	 | 
 
 
 |  
  |