| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Доступ к свойствам объекта из методов объекта |
| Автор: vlarry 14.1.2016, 11:19 | ||
| Добрый день, форумчане. Помогите пожалуйста. Не могу обратиться к свойствам объекта из метода объекта. Есть объект:
Вывод при клике мыши: _onMouseClick current number shape: undefined type shape: undefined Почему я не могу получить значения этих свойств? Спасибо. |
| Автор: Cheloveck 14.1.2016, 12:33 |
| Кури, что есть this в JavaScript`е. У тебя оно везде неверно используется! |
| Автор: ksnk 14.1.2016, 12:34 | ||||
| vlarry, Дело в том, что Javascript - СЛИШКОМ простой язык Чтобы правильно установить значение this при вызове - его нужно указать явно! xxx.yyy() - вот так, например , при вызове метода yyy объекта xxx переменная this будет указывать в xxx. А вот в конструкции
исполнитель javascript тупо потеряет значение переменной this, так как это значение не будет указано явно. Решений может быть несколько. Например - "замкнуть" значение нужного нам this в теле функции.
Неочевидность замыкания в JS тоже является следствием простоты языка |
| Автор: Cheloveck 14.1.2016, 12:35 |
| Hint: внутри метода используй Shape.* вместо this.* |
| Автор: vlarry 14.1.2016, 13:00 | ||||
| Спасибо. Я так и сделал, через Shape. Появился такой вопрос: при обработке движения в методе Shape._onMouseMove другие обработки (левый и правый клик мышки) перестают работать. Где может быть ошибка? Вот обработка движения:
Для рисования использую библиотеку leaflet. Спасибо. Добавлено через 1 минуту и 14 секунд Если закомментировать строку
то все отрабатывается, а иначе нет. |
| Автор: vlarry 14.1.2016, 17:18 |
| Все решил. Оказалось я использовал группу слоев L.featureGroup, и здесь присутствуют свои обработчики мышки, поэтому использовал простейшую группу слоев L.layerGroup и тогда все работает. |