Показать сообщение отдельно
  #11 (permalink)  
Старый 12.08.2015, 21:15
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от khusamov Посмотреть сообщение
Где-то в недрах метода addListener

http://docs.sencha.com/extjs/5.1/5.1...od-addListener

происходит обращение к массиву, в качестве индекса используя SCOPE. Хотя SCOPE это вообще-то объект. Так ведь?
Не совсем так. scope может быть и строкой, а namedScopes это не массив, а объект.

Цитата:
У меня в некоторых компонентах есть метод toString(), который при таком обращении к массиву неявно вызывается.
Компонент - это объект JavaScript. Объекты JavaScript имеют нативный метод toString(), который возвращает "[object Object]". Эта конвенция соблюдается с момента появления JavaScript, и на неё закладывается не только Ext JS, а вообще практически любая сколько-нибудь серьёзная библиотека. Вы эту конвенцию нарушаете, переопределяя метод toString.

Цитата:
И теперь вопрос, что собственно делать-то???
Ваш код, вам и решать конечно. Я бы поменял название метода на что-нибудь другое, т.к. количество красоты и няшности от простого названия toString переоценено, а вот количество геморроя на свою голову из-за нарушения базовых конвенций очень сильно недооценивается.

Цитата:
У меня в итоге методы on() не работают.
Это ещё цветочки. Вам повезло, что эта проблема вылезла на относительно раннем этапе, в синхронном коде и в легко отлавливаемом виде. Могло быть гораздо хуже - и будет, если вы оставите всё как есть.
Ответить с цитированием