Я исхожу из фона прототипа JS, где OO Javascript рекомендуется с помощью Class.create()
. Теперь я выполняю некоторую работу JQuery, и я пытаюсь написать правильно структурированный код JQuery, где я могу, например, вызвать одну и ту же функцию объекта из двух разных обработчиков событий кликов.
Вот код в Prototype:
document.observe("dom:loaded", function() {
// create document
APP.pageHelper = new APP.PageHelper();
});
// namespace our code
window.APP = {};
// my class
APP.PageHelper = Class.create({
// automatically called
initialize: function(name, sound) {
this.myValue = "Foo";
// attach event handlers, binding to 'this' object
$("myButton").observe("click", this.displayMessage.bind(this))
},
displayMessage: function() {
console.log("My value: " + this.myValue); // 'this' is the object not the clicked button!
}
});
Мне интересно, как следующий код может быть реплицирован в JQuery, где невозможно связать вызов функции с объектом, в котором он вызван, а 'this' - это всегда щелчок элемента.
Я слышал о том, как сделать это модулем "Модуль" Дугласа Крокфорда (http://www.yuiblog.com/blog/2007/06/12/module-pattern/), но я бы с удовольствием, если бы кто-то мог покажите мне, как реализовать код выше, используя JQuery и этот шаблон.
Спасибо заранее.