Я пришел из Prototype 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 и этот шаблон.
Заранее спасибо.