微小的JavaScript库停止工作

时间:2014-02-02 01:07:45

标签: javascript debugging error-handling local-storage

对于之前在SO上回答的问题,我制作了以下库。

(function(){
    var LS = function(){
        return new LS.fn.init();
    };
    LS.fn = LS.prototype ={
        //Check to see if the browser suports LocalStorage
        init : function(){
            this.ls = (typeof(Storage)!=="undefined") ? false : true;
            return this;
        }
    }
    LS.fn.init.prototype = LS.fn;
    LS.fn.init.prototype = {
        set : function(name, val){
            if(this.ls) localStorage.setItem(name, val);
        },
        get : function (name){
            if(this.ls) return localStorage.getItem(name);
        },
        remove : function(name){
            if(this.ls) localStorage.removeItem(name);
        },
        test: function(){
            alert("hi")
        }
    }
    window.LS = window.ls = LS;
})();
直到最近,这个工作正常。

我收到的错误如下:

LS.set("foo", "bar"); // Error: undefined is not a function... 

即使以下代码也会出错:

LS.test();

为什么停止工作?

谢谢。

注意:以前,我有一个拼写错误,但现在我已经解决了这个问题,但仍然无效。

1 个答案:

答案 0 :(得分:2)

您的window.LS被初始化为一个函数,您似乎正在使用它,就像您希望它被初始化为该函数的返回值一样。

更改此行:

window.LS = window.ls = LS;

为:

window.LS = window.ls = LS();

另外,尝试简化库代码。这看起来很复杂。至少要注释一下,以表明各个部分的用途。例如,在任何地方都没有使用拼写错误的部分(LS.protorype)。