Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   localstorge ФУНКЦИЯ ДЛЯ РАБОТЫ!!!!! (https://javascript.ru/forum/misc/24588-localstorge-funkciya-dlya-raboty.html)

devote 07.01.2012 22:00

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

Livaanderiamarum 07.01.2012 22:00

Цитата:

Сообщение от Kolyaj (Сообщение 148700)
В таких случаях всегда проверяем arguments.length, а не typeof value. Может я хочу undefined положить?

undefined удаляет ключ

Livaanderiamarum 07.01.2012 22:01

Народ, поможете написать 3 регулярки)? в последний раз прошу) с завтрашнего дня буду сам учить

melky 07.01.2012 22:03

Livaanderiamarum

(function(i){function e(b,a){if(null==a)return localStorage.removeItem(b),!0;switch(typeof a){case "string":a+="s";break;case "number":a+="n";break;case "boolean":a+="b";break;case "function":a=a.toString().replace(/\s+/g," ").match(/function.*{(.*)}/)[1]+"f";break;case "object":a=JSON.stringify(a)+"o"}try{return localStorage.setItem(b,a),!0}catch(c){if(c==QUOTA_EXCEEDED_ERR)return console.log("Local storage overflowing"),!1}}function f(b,a){var a=localStorage.getItem(b),c=a[a.length-1],a=a.slice(0,
-1);switch(c){case "s":return a;case "n":return Number(a);case "b":return Boolean(a);case "f":return Function(a);case "o":return JSON.parse(a)}}function h(b,a){if(a)for(c in b){if(c in localStorage)break;e(c,b[c])}else for(var c in b)e(c,b[c])}if(!localStorage)return console.log("localStorage not supported"),!1;window[i]=function(b,a){if(0==arguments.length){var c={},d;for(d in localStorage)c[d]=f(d);return c}if(1==arguments.length){if(null===b)return localStorage.clear(),!0;if("object"==typeof b)return h(b),
!0;c=!1}else if(2==arguments.length){if("object"==typeof b)return h(b,a),!0;c=!0}var g=b.indexOf(".");if(-1==g)if(c)e(b,a);else return f(b);else if(0==g)if(c)for(d in localStorage)-1!=d.indexOf(b)&&d.indexOf(b)+b.length==d.length&&e(d,a);else{c=[];for(d in localStorage)-1!=d.indexOf(b)&&d.indexOf(b)+b.length==d.length&&c.push(f(d));return c}else if(g==b.length-1)if(c)for(d in localStorage)0==d.indexOf(b)&&e(d,a);else{c=[];for(d in localStorage)0==d.indexOf(b)&&c.push(f(d));return c}else if(c)e(b,
a);else return f(b);return!0}})
('storge') //сюда вводим имя функции которое нам приятнее юзать

*!*
storge('keyName', alert) /*native func*/
var func = storge('keyName')
func("Няяяяя")
*/!*
nuff said

Livaanderiamarum 07.01.2012 22:06

Цитата:

Сообщение от melky (Сообщение 148710)
nuff said

когда сам это сделаешь позвони)

Livaanderiamarum 07.01.2012 22:08

Нужно проверить:
ЕСТЬ ли точка?
В начале ли она?
В конце ли она?

для этого нужно писать 3 регулярки)?

melky 07.01.2012 22:12

Цитата:

Сообщение от Livaanderiamarum (Сообщение 148711)
когда сам это сделаешь позвони)

в твоём "супир" скрипте есть дыра. я тебе её указал. что не так?


Цитата:

Сообщение от Livaanderiamarum (Сообщение 148713)
Нужно проверить:
ЕСТЬ ли точка?
В начале ли она?
В конце ли она?

для этого нужно писать 3 регулярки)?

одну можно. поищи про "|"

Livaanderiamarum 07.01.2012 22:20

Цитата:

Сообщение от melky
в твоём "супир" скрипте есть дыра. я тебе её указал. что не так?

это не дыра)) ЗАДУМАНО ЧТО нативные методы нельзя сохранять
это фитча, Я так пожелал.) такова моя ВОЛЯ

а за суперскрипт спасибо)

devote 07.01.2012 22:32

Цитата:

Сообщение от Livaanderiamarum
когда сам это сделаешь позвони)

Цитата:

Сообщение от melky
в твоём "супир" скрипте есть дыра. я тебе её указал. что не так?

Для нативных функций это вообще отдельная история, хотя сохранить их можно при желании.. Но вот насчет кроссбраузерности сомневаюсь что выйдет. Что-то типа так:
function test( value ) {
    if ( value.toString().indexOf( '[native code]' ) > 0 ) {
        alert( "this is native object" );
        // и тут в JSON можно запихнуть инфу о названии функции и просто на получение выдавать соответственно саму функцию в браузере
    } else {
        alert( "this is custom object" );
    }
}

test( alert );
Работать правда будет не во всех браузерах, да и имя функции нужно выяснять как-то.

Livaanderiamarum 07.01.2012 22:41

Цитата:

Сообщение от devote (Сообщение 148722)
да и имя функции нужно выяснять как-то.

кстати да, как узнать на что ссылку присваивать доставаемому обьекту)?


Часовой пояс GMT +3, время: 14:56.