Storage.prototype在IE8中不起作用

Pau*_*lay 2 javascript local-storage

我一直试图让它在IE8中工作,虽然它没有抱怨这些,但它完全忽略了它们.

if( typeof(Storage) != "undefined"){
    Storage.prototype.setObject = function(key, value) {
          this.setItem(key, escape(JSON.stringify(value)));
    }   

    Storage.prototype.getObject = function(key) {       
        return JSON.parse(unescape(this.getItem(key)));
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试:

localStorage.setObject("key", <Some object>);
Run Code Online (Sandbox Code Playgroud)

我得到一个"对象不支持此方法"错误引发错误,甚至没有调用该函数.当然这个代码在Chrome和Firefox中工作得很好,甚至可能在我1980年的卡西欧手表上也能正常工作.

任何帮助都会很棒.

当我得到我的对象时,偶然和完全不相关的IE8我必须JSON.parse它两次得到对象...

谢谢保罗

Nie*_*sol 6

你最好使用一个单独的函数,而不是搞乱内置对象的原型.

function storeObject(key,obj) {
    localStorage[key] = JSON.stringify(obj);
}
function retrieveObject(key) {
    return JSON.parse(localStorage[key]);
}
Run Code Online (Sandbox Code Playgroud)

这比原型操作更可靠,特别是在旧版浏览器中.