Метод 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,
Не ? try { namedScope = scope && namedScopes[scope]; } catch (e) { namedScope =false; }Наверно не то =============== Вот что-то http://docs.sencha.com/extjs/4.2.1/#...-method-handle |
Вообще-то приведенный мною код это часть метода addListener
а хак не хочется делать, так как эта проблема не только этого метода... там много где таких мест... |
khusamov,
Ну интуитивно, переопределить метод toString() именно для этого конкретного приложения _ToString(), в нем и забодать проверки |
Цитата:
Возможно вы про такой вариант. Если городить свои toString(), то называть их иначе, чтобы с не совпали с системным названием, например toSvgString(), тогда они не будут вызываться. Так вы имели ввиду? Но тут проблемки: 1) я уже наплодил кучу таких методов и у меня уже есть программа, которая использует эту библиотеку (переименование мне может дорого стоить в случае переименовывания по смыслу выходной строки), 2) не очень хотелось бы лишаться такого красивого и лаконичного названия метода (хотя это не существенно по большому счету, но проблема не в JavaScript, а в Ext JS, где вот так, на мой взгляд не корректно, достают значения массивов). |
Сделайте так чтоб toString не возвращал пустую строку.. или откажитесь от toString().
|
Цитата:
|
Ну для инстансов можно вот такую строку возвращать например "{}". Или например так "MyClassName: {}"
|
Я не знаю для чего вы завязались на toString() так что гадать тяжело.
|
как для чего? Для сериализации объектов. Мне нужно объекты в строку превращать. Например Path из SVG это строка с командами рисования пути. И если в Path нет сегментов, то строка должна быть пустой.
|
Часовой пояс GMT +3, время: 16:44. |