HTML5 localStorage:我的代码是否遵循正确的标准?

| 好的,所以我创建了一个使用localStorage的HTML5画布游戏。我的localStorage可以正常运行,但是我不确定它是否遵循正确的标准,或者它是否完全符合我的编写方式。
//check if storage is set already, if not set the variable   
function checkLocalStorage(){  
if (localStorage.timesPlayed){  
timesPlayed = Number(localStorage.timesPlayed);  
}   
else{   
timesPlayed = 0;   
}   
}

//code snippet to increase my variable   
timesPlayed += 1;

//code snippet to set the localStorage   
localStorage.timesPlayed = timesPlayed;
这样完美!!但是从我读到的内容来看,我应该使用localStorage.getItem和localStorage.setItem吗? 我应该更改编写localStorage的方式吗? 这只是我学习以这种方式访问​​localStorage的网站的链接 http://hacks.mozilla.org/2009/06/localstorage/     
已邀请:
        它可以正常工作,并且可能不会中断,但是在使用localStorage时,我仍然会尝试以正确的类型进行转换。
getItem
setItem
是首选的处理方式,但是让我惊讶的是,您获取和设置值的方法只适用于数字,不适用于任何类型,这意味着您必须谨慎编码\正在使用大量的localStorage。 您正在将一个数字发送到localStorage,并在其中将其转换为字符串。在处理布尔值时,这可能会给您带来很多麻烦,例如:
var won = false;
localStorage.isWinner = won;
if (localStorage.isWinner) { // always true
  alert(\"You won!\");
}
数组和对象也变得丑陋:
localStorage.test = {foo: \"bar\", dog: \"cat\"};
// returns \"[object Object]\"
换句话说,您拥有的东西可以工作,但是从一开始就正确正确地进行操作是一个好习惯,因为这将简化以后的调试。正确的方法-适用于字符串,数字,数组,对象-是这样的:
localStorage.setItem(\"key\", JSON.stringify(value));
JSON.parse(localStorage.getItem(\"key\"));

// or as a de facto alternative

localStorage.key = JSON.stringify(value);
JSON.parse(localStorage.key);
    
        我不认为ѭ6的数组访问符号是标准的一部分,但是大多数实现的浏览器可能会允许这种可能性。如果要特别小心,请使用
getItem
setItem
-但是就我个人而言,我不认为这是一个问题。 Mozilla说:   尽管可以通过标准JavaScript属性访问方法设置和读取值,但建议使用getItem和setItem方法。 http://dev.w3.org/html5/webstorage/#storage-0 即使该草案中的示例也使用属性访问符号,所以我认为您还可以。     
        对于小型应用程序,直接读写localStorage是可以的,但是我认为在更复杂的应用程序中,最好包装localStorage并为API提供适合特定应用程序的get和set方法(例如get / setMySpecialObject和get / setMySpecialValue)。 我不认为应用程序应该关心数据的存储位置,而应该调用API来获取或设置数据。 API背后的代码说明了如何存储它以及从何处获取它。通常,最有效的方法是在后台读取和写入数据,然后在本地存储中读写。首次请求时从localStorage获取数据并进行缓存。如果在此过程中进行了更新,请适当地写回localStorage,它不需要应用程序发出命令。     

要回复问题请先登录注册