Показать сообщение отдельно
  #1 (permalink)  
Старый 24.04.2013, 04:48
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

Пасоны, можно ли такое использовать в реальном проекте если заморозить toString?
я про замену toString, ведь если его заменят, то мой не будет работать.... но я думаю в этом уже будет виновата рукожопость того кто заменяет функции не сохраняя старый функционал

var Map = (function () {

	var last = null;
	var _toString = Object.prototype.toString;

	Object.prototype.toString = function () {
		last = this;
		return _toString.apply(this, arguments);
	};

	function Map () {
		this.keys = [];
		this.values = [];
	}

	Object.defineProperty(Map.prototype, '[object Object]', {

		get: function () {

			var index = this.keys.indexOf(last);
			return this.values[index];
		},

		set: function (value) {

			var index = this.keys.indexOf(last);

			if (index !== -1)
				return this.values[index] = value;

			this.keys.push(last);
			this.values.push(value);

			return value;
		}
	});

	return Map;

})();


var map = new Map();

var key = {a:2};
var key2 = {b:3};

map[key] = 9999999;
map[key2] = 'ololo';

alert( map[key] );
alert( map[key2] );

Последний раз редактировалось megaupload, 24.04.2013 в 08:20.
Ответить с цитированием