Есть такой скрипт:
(function(window) {
/**
* Главная функция-объект
* @return {Object} [Возвращаем ссылку на объект для вызова цепочки методов]
*/
window.Options = function (opts){
var _private = {
/**
* Приватный объект с настройками по-умолчанию. Доступа к нему через экземпляр объекта не будет.
*/
_options: {"id":1},
__init__: function(opts){
var settings = typeof opts == "object" ? opts : _private._options;
_private._setAll(settings);
},
/**
* Приватный метод получения ключа объекта настроек
* @param {String} key [Имя ключа в объекте настроек]
* @return {Mixed} [Возвращает опцию с ключом key. В случае если key не передан, то возвращает ссылку на объект для вызова цепочки методов. В случае если key не найден в настройках, то возвращает undefined]
*/
_getItem: function(key) {
if(typeof key !== "undefined"){
if(key in _private._options){
return _private._options[key];
}
return undefined;
}
return this;
},
/**
* Приватный метод устанавливает ключ настройки key в значение переданного аргумента value
* @param {String} key [Имя устанавливаемого ключа в объекте настроек]
* @param {Mixed} value [Значение]
* @return {Object} [Возвращаем ссылку на объект для вызова цепочки методов]
*/
_setItem: function(key, val) {
if(typeof val !== "undefined"){
_private._options[key] = val;
}
return this;
},
/**
* Приватный метод возвращает объект настроек this._options
* @return {Object} [Возвращает объект настроек this._options]
*/
_getAll: function() {
return _private._options;
},
/**
* Приватный метод устанавливает настройки из переданного объекта options
* @param {Object} options [Объект с настройками вида {"ключ": значение}]
* @return {Object} [Возвращаем ссылку на объект для вызова цепочки методов]
*/
_setAll: function(options){
if(options && typeof options == "object"){
for(opt in options){
_private._options[opt] = options[opt];
}
}
return this;
}
};
_private.__init__(opts);
return {
getItem: _private._getItem,
setItem: _private._setItem,
get: _private._getAll,
set: _private._setAll
};
};
})(window);
var options = new Options({"new": "newItem"});
alert(JSON.stringify(options.get()));
И есть желание сделать так, чтобы к свойствам можно было обращаться и
options.getItem(key)
и вот так:
var id = options.id;
Что посоветуете?