Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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() не работают.
Это ещё цветочки. Вам повезло, что эта проблема вылезла на относительно раннем этапе, в синхронном коде и в легко отлавливаемом виде. Могло быть гораздо хуже - и будет, если вы оставите всё как есть.
Ответить с цитированием
  #12 (permalink)  
Старый 13.08.2015, 11:27
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Нашел другую ошибку... Оказывается эта проблема всплывает, если метод toString() выдает пустой массив []. Тогда код:
namedScope = scope && namedScopes[scope];

генерирует ошибку Cannot convert object to primitive value
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #13 (permalink)  
Старый 13.08.2015, 11:53
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

я не понял у вас toString() возвращает НЕ строку?
Ответить с цитированием
  #14 (permalink)  
Старый 13.08.2015, 12:37
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

угу... возвращал массив, из-за чего проблемы все и были
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37