Показать сообщение отдельно
  #12 (permalink)  
Старый 17.05.2015, 17:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Да, пример выше глюкавый по некоторым причинам, ниже проверенный в работе

var Get=(function(){
	var qd = {}, qs={};
	for(var s=location.search.substr(1).split('&'),i=0;item=s[i];i++)
		qd[item.split('=')[0]]=decodeURIComponent(item.split('=')[1]);
	return {
		set:function(k,v){
			qs[k]=v;
			return this;
		},
		get:function(k){
			return (k in qd)?qd[k]:null;
		},
		toString:function(){
			var k,res=[];
			for(k in qs)
				qd[k]=qs[k];
			for(k in qd)
				if(qd[k]!==null)
					res.push(k+'='+encodeURIComponent(qd[k]));
			return res.join('&');
		},
		ass:function(){
			location.search=this.toString();
		},
		rm:function(){
			qs={};
		},
		qd:qd
	};
})();


ass это сокр от assign, а rm - сокр от remove

Следующий вопрос - как делаются геттеры и сеттеры у таких объектов? У меня даже toString() походу не фурычит, хоть это и не актуально в js, а вот геттер-сеттер было бы полезно, если, конечно, там не туча кода.
Ответить с цитированием