JQuery, похоже, перезаписывает ключевое слово моего метода экземпляра при добавлении в качестве обработчика события. Почему это происходит? Код ниже:JQuery, перезаписывающее это ключевое слово в прототипе
function Foo() {};
Foo.prototype.bark = function() {
console.log(this);
};
var foo = new Foo();
$("#b").click(foo.bark);
Выход по щелчку: <button id="b" type="button">
Однако JQuery, кажется, не переопределить this
ключевое слово в коде ниже:
$("#b").click(function() { foo.bark(); });
Выход по щелчку:
`Foo { bark=function()}`
Я считаю, что это потому, что в контексте того, что '.bark' называется,' это 'ссылается на вашу кнопку. –
Работает как и ожидалось! – Mathletics
Это ожидаемое поведение. Все функции, назначенные в качестве прослушивателя событий, будут иметь ключевое слово 'this', указывающее на экземпляр элемента, в котором было запущено событие. – marekful