См. Любой из виджетов 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.
}