在localStorage之上创建我自己的存储API,以便在我自己的代码中使用它。
所以它有一个API用于我的目的,可以稍后扩展。
Chrome版本:版本22.0.1229.94 m
JSFiddle:http://jsfiddle.net/ttback/kr88W/
小提琴将在控制台中触发错误:
这适用于IE 8和Firefox 16.0.1,所以我想知道我是否遗漏了某些东西或者它是Chrome的错误。
<html>
<head>
<title>JS function not working in Chrome</title>
<script type="text/javascript">
var localStorage = localStorage || {};
localStorage.localStorageSave = function(){
alert("SAVE");
};
localStorage.localStorageSave();
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:6)
当你这样做时
localStorage.localStorageSave = function(){
alert("SAVE");
};
你做的和
一样localStorage["localStorageSave"] = function(){
alert("SAVE");
};
或
localStorage.setItem("localStorageSave", (function(){
alert("SAVE");
}).toString());
你实际上没有在localStorage中保存一个函数,因为localStorage只保存字符串。
您可以使用
进行检查console.log(typeof(localStorage.localStorageSave));
你得到"string"
。这不是一个功能,而且是正常的。
答案 1 :(得分:2)
答案 2 :(得分:2)
您不应该扩展window.localStorage。更好的方法是:
var myNameSpace = {};
myNameSpace.localStorage = {
save: function (name, object) {
//save to localStorage
window.localStorage.setItem(name, window.JSON.stringify(object));
}
}
myNameSpace.localStorage.save('testObject', {test: true});