对于之前在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();
为什么停止工作?
谢谢。
注意:以前,我有一个拼写错误,但现在我已经解决了这个问题,但仍然无效。
答案 0 :(得分:2)
您的window.LS
被初始化为一个函数,您似乎正在使用它,就像您希望它被初始化为该函数的返回值一样。
更改此行:
window.LS = window.ls = LS;
为:
window.LS = window.ls = LS();
另外,尝试简化库代码。这看起来很复杂。至少要注释一下,以表明各个部分的用途。例如,在任何地方都没有使用拼写错误的部分(LS.protorype
)。