Пытаюсь добавить своё собственное замыкание каждому объекту типа Object, но все новые объекты ссылаются на одно и тоже замыкание.
Как заставить объект создавать своё собственное замыкание?
код:
Object.prototype.key = function(key){
// замыкание
var _private = (function(){
var self = this;
// 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());