Примеры нескольких экземпляров виджетов JavaScript (на одной странице)? - PullRequest
0 голосов
/ 24 августа 2010

Извиняюсь за быстрый вопрос, но я хотел бы увидеть некоторые примеры виджетов, которые допускают несколько экземпляров на одной странице. (Статьи об этой технике тоже подойдут!)

Виджет Digg позволяет это (http://about.digg.com/downloads/widgets), но я не знаю других.

А ты?

Спасибо.

1 Ответ

1 голос
/ 25 августа 2010

См. Любой из виджетов YUI .Например, несколько кнопок с расширенным YUI на странице.

Создание нескольких экземпляров с данными для каждого экземпляра

Основной метод показан ниже.1011 *

Поскольку вызывающая программа использует new, для каждого виджета создается новый экземпляр объекта Larry.widget.Таким образом, каждый виджет имеет свой собственный отдельный объект «this» и использует его для хранения данных для каждого экземпляра.

В то же время прототип объекта содержит функции.Таким образом, все виджеты имеют одни и те же функции, но имеют свой набор данных.

Larry = {}; // Create global var
Larry.widget = function (options) {
  // create with new. Eg foo = new Larry.widget({an_option: true, id: "q_el"});
  // options: object with members:
  //   an_option
  //   id
  // Then call foo.xyz(); to get the widget to do xyz
  this.init(options);
};

Larry.widget.prototype = {
  constructor: Larry.widget,
  // Setting the constructor explicitly since we're setting the entire
  // prototype object. 
  // See /489127/svoistva-obekta-prototipa-i-konstruktora#489129

  init: function(options) {
    this.id = options.id;
    this.an_option= options.an_option;

    this._function_a(); // finish initialization via a function.
  },  // remember that function init is a member of the object, so separate 
      // the functions using commas

  _function_a: function() {
     // This is a "private" function since it starts with _
     // Has access to "this" and its members (functions and vars)
     ....
  },

  xyz: function() {
     // This is a "public" function. 
     // Has access to "this" and its members (functions and vars)
     ...
  } // Note: NO TRAILING COMMA!
    // IE will choke if you include the trailing comma. 
}         
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...