Написание объектно-ориентированного Javascript с помощью jQuery

Я исхожу из фона прототипа 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 и этого шаблона.

Заранее спасибо.

13
задан Rob W 28 December 2011 в 13:13
поделиться