Object.prototype.key = function(key){
*!*var self = this;*/!* //Вынеси self из _private, чтобы сделать ссылку на объект
// замыкание
var _private = (function(){
// set pointer to zero if it's not defined yet
if (typeof(self.pointer) === 'undefined') self.pointer = 0;
// define setter & getter functions
var setter = function(a){self.pointer = a;}
var getter = function(){return self.pointer;}
// return functions from clouser
return {set: setter, get: getter};
})();
// поставить переменную в замыкание
if (!!key) _private.set(key);
// вернуть переменную из замыкания
return _private.get();
}
var FirstObject = {};
// set private value for first object
FirstObject.key(100);
var SecondObject = {};
// set private value for second object
SecondObject.key(999);
// возвращает 999, а не 100
alert(FirstObject.key());