Прежде всего, спасибо всем, кто ответил.Мне удалось решить эту проблему, хотя я не могу сказать вам, почему она не сработала в первую очередь (если кто-то регулярно ловит рыбу в стандарте ECMAscript, пожалуйста, не стесняйтесь обращаться ко мне).Проблема была определенно this._clickFunction.bind(this))
.По какой-либо причине это создает замыкание, которое сохраняет объект evt
.Решение (как некоторые из вас предложили в комментариях) состояло в том, чтобы просто обойти эту строку, настроив функцию в конструкторе.
Оригинал:
SomeClass = Base.extend({
_clickFunction: function(evt) {
alert(this.someBaseClassMethod() + 'x: ' + evt.targetX+ 'y:'+ evt.targetY);
},
go: function(){
myClickableThing.addListener('click', this._clickFunction.bind(this));
}
}
Исправленная версия:
SomeClass = Base.extend({
_clickFunction:null,
constructor: function(){
this._clickFunction = function(evt) {
alert(this.someBaseClassMethod() + 'x: ' + evt.targetX+ 'y:'+ evt.targetY);
}
},
go: function(){
myClickableThing.addListener('click', this._clickFunction);
}
}