Показать сообщение отдельно
  #10 (permalink)  
Старый 30.09.2010, 17:56
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

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());

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