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 |
|
|
|