自定义localStorage js功能未在Chrome中运行

ttb*_*ack 5 javascript google-chrome local-storage

我正在做的事情:

在localStorage之上创建我自己的存储API,以便在我自己的代码中使用它更容易.

为什么?

所以它有一个API用于我的目的,可以稍后扩展.

系统:

Chrome版本:版本22.0.1229.94 m

JSFiddle:http://jsfiddle.net/ttback/kr88W/

错误

小提琴将在控制台中触发错误:

TypeError:对象#的属性"localStorageSave"不是函数

这适用于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>?
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 6

当你这样做

localStorage.localStorageSave = function(){
    alert("SAVE");
};
Run Code Online (Sandbox Code Playgroud)

你也是这样做的

localStorage["localStorageSave"] = function(){
    alert("SAVE");
};
Run Code Online (Sandbox Code Playgroud)

要么

localStorage.setItem("localStorageSave", (function(){
    alert("SAVE");
}).toString());
Run Code Online (Sandbox Code Playgroud)

实际上你并没有在localStorage中保存一个函数,因为localStorage只保存字符串.

你可以检查一下

console.log(typeof(localStorage.localStorageSave));
Run Code Online (Sandbox Code Playgroud)

你得到"string".这不是一个功能,是正常的.

  • setItem和括号表示法都记录在案.我猜其他浏览器制造商并没有考虑localStorage的点符号. (2认同)