Показать сообщение отдельно
  #1 (permalink)  
Старый 30.09.2010, 17:07
Интересующийся
Отправить личное сообщение для cainrus Посмотреть профиль Найти все сообщения от cainrus
 
Регистрация: 30.09.2010
Сообщений: 13

своё замыкание каждому объекту.
Пытаюсь добавить своё собственное замыкание каждому объекту типа 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());

Последний раз редактировалось cainrus, 30.09.2010 в 17:09.
Ответить с цитированием