Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.01.2012, 01:56
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от trikadin
он предполагает 100500 if'ов в ф-ции
Не понял, где хоть один иф в моем прмере?
Ответить с цитированием
  #12 (permalink)  
Старый 29.01.2012, 03:36
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от Livaanderiamarum
Не понял, где хоть один иф в моем прмере?
Ну вас метод storage такой умный, в зависимости от того какие аргументы, решает что именно делать, в итоге, внутри него проверяются аргументы и вызываются нужные методы, а если в цикле в сторэдж надо будет загнать 1000 ключ-значений, и каждый вызов вашего смарт-метода, наплодит кучу ненужных операций проверок, не знаю когда может возникнуть ситуация(в оправдание этому методу) когда я например не знаю что мне сделать, установить name=>Вася или очистить хранилище
__________________
readOnly

Последний раз редактировалось poorking, 29.01.2012 в 14:37.
Ответить с цитированием
  #13 (permalink)  
Старый 29.01.2012, 03:50
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от poorking
а если в цикле в сторэдж надо будет загнать 1000 ключ-значений, и каждый вызов вашего смарт-метода, наплодит кучу ненужных операций проверок
в таких случаях не нужно использовать смарт оболочку, и для оптимизации нужно использовать родной обьект.)
Ответить с цитированием
  #14 (permalink)  
Старый 29.01.2012, 10:00
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Livaanderiamarum, сразу видно - вы поняли, о чём мы говорили)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #15 (permalink)  
Старый 29.01.2012, 16:27
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

trikadin, ты про оптимизацию?) ну куки я думаю циклом по 20 000 не устанавливаются, можно шелл и поумнее сделать)
Ответить с цитированием
  #16 (permalink)  
Старый 29.01.2012, 17:14
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от Livaanderiamarum
trikadin, ты про оптимизацию?) ну куки я думаю циклом по 20 000 не устанавливаются, можно шелл и поумнее сделать)
Куки - возможно. Но речь шла о storage.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #17 (permalink)  
Старый 29.01.2012, 17:29
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

а, ну ты б цитатку сделал, а то не понятно про что ответил, я думал ты с скарказмом сказал про куки, типа (представляю че там творится у тя с функцией установки)
Ответить с цитированием
  #18 (permalink)  
Старый 30.01.2012, 04:46
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

(function() {
	// задаем имена
	var names = {
		alert : 'alert',
		console : "log",
		JSON : "JSON",
		localStorage : "storage",
		cookies : 'cookies'
	};

	// alert
	(function(name) {
		var al = alert;
		window[name] = function(arg, arg2) {
			for ( var i = 0; i < arguments.length; i++) {
				al(arguments[i])
			}
		}
	})(names['alert']);

	// console.log
	(function(name) {
		window[name] = function(arg) {
			console.log(arg)
		}
	})(names['console']);

	// JSON
	(function(name) {
		var func = function(arg) {
			return JSON[typeof arg == 'string' ? 'parse' : 'stringify'](arg)
		}
		func.parse = JSON.parse
		func.stringify = JSON.stringify
		window[name] = func
	})(names['JSON']);

	// localStorage
	(function(name) {
		window[name] = function(arg, arg2) {
			if (arguments.length == 1) {
				return (arg === null) ? localStorage.clear() : JSON
						.parse(localStorage.getItem(arg))
			} else {
				return (arg2 === null)
						? localStorage.removeItem(arg)
						: localStorage.setItem(arg, JSON.stringify(arg2))
			}
		}
	})(names['localStorage']);

	// cookies
	(function(name) {
		function set(name, value, expires, path, domain, secure) {
			document.cookie = name + "=" + escape(JSON.stringify(value))
					+ (expires ? "; expires=" + expires.toGMTString() : '')
					+ (path ? "; path=" + escape(path) : '')
					+ (domain ? "; domain=" + escape(domain) : '')
					+ (secure ? "; secure" : '')
		}
		function del(name) {
			var cookieDate = new Date();
			cookieDate.setTime(cookieDate.getTime() - 1000);
			document.cookie = name + "=; expires=" + cookieDate.toGMTString();
		}
		function get(cookie_name) {
			var results = document.cookie.match('(^|;) ?' + cookie_name
					+ '=([^;]*)(;|$)');
			if (results)
				return JSON.parse(unescape(results[2]));
			else
				return null;
		}
		function gen(name, value) {
			get(name) !== null && del(name);
			var expires, path, domain, secure, time = [0, 0, 0], tI = 0;
			function setTime(arg) {
				time[tI++] = arg
			}
			for ( var i = 2; i < arguments.length; i++) {
				var arg = arguments[i]
				switch (typeof arg) {
					case 'string' :
						if (arg == "on") {
							secure = true
						} else if (arg[0] === '/') {
							path = arg
						} else {
							domain = arg
						}
						break;
					case 'number' :
						setTime(arg)
						break;
					case 'boolean' :
						if (arg === true)
							setTime(2200);
						break;
				}
			}
			if (tI > 0) {
				expires = new Date(time[0], time[1], time[2])
			}
			set(name, value, expires, path, domain, secure)
		};
		window[name] = function(name, value) {
			if (arguments.length == 1) {
				return get(name)
			} else {
				if (value === null) {
					del(name)
				} else {
					gen.apply(this, arguments)
				}
			}
		}
	})(names['cookies']);
})();


cook('name', 10) //установить куку name в значение 4, на время сессии
cook('name') //получить значение
cook('name', 10, 2013, 9, 10) //установить на срок до 2013 год 9 месяц 10 день
cook('name', 10, 2013, 9) //установить на срок до 2013 год 9 месяц 1 день
cook('name', 10, 2013) //установить на срок до 2013 год 1 месяц 1 день
cook('name', 10, true) //установить на вечно


после имени и значения, можно добавлять необязательные параметры в произвольном порядке, это дата путь домен и защита

например
cook('name', 10, 2013, '/', 'javascript.ru')
cook('name', 10, 2013, 'javascript.ru', '/')
cook('name', 10, 2013, 'javascript.ru', 'on', '/')   //с включенной защитой 
cook('name', 10, 'on', 'javascript.ru')   //с включенной защитой без срока без пути
cook('name', 10, 'on')   //с включенной защитой на время сессии
cook('name', 10, true, 'on')   //с включенной защитой навечно
cook('name', 10, 'on', true)   //с включенной защитой навечно


и конечно же
cook('name', null) //удалить куку


единственное что если вы указываете дату а это number'ы, то number тип должен появляться в аргументах в порядке год месяц день, между годом и месяцем например МОГУТ быть другие параметры не связанные с датой, например "on". (вдруг кому то в жопу такое стрельнет)

cook('name', 10, 2012, 'on', 9) //2012 год 9 месяц, защита включина




Так же теперь в алерт можно параметры передавать через запятую, это вызывет алерт с каждым параметром по очереди.
давно себе такую шнягу хотел кстати))

все отключабильно, подключабильно, без зависимостей и конфликтов. Хотите че-то отключить - вырезаете кусок кода. хотите переименовать? переименовываете вверху.

Последний раз редактировалось Livaanderiamarum, 30.01.2012 в 09:24.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баги Opera пишем сюда devote Оффтопик 101 08.08.2013 05:56
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37