小编Fer*_*ora的帖子

在sessionStorage中保存Javascript对象

SessionStorage和LocalStorage允许在Web浏览器中保存键/值对.该值必须是一个字符串,并且保存js对象并不简单.

var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过将对象序列化为JSON,然后反序列化它们来恢复对象来避免此限制.但是Storage API总是通过setItemgetItem方法传递.

sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
Run Code Online (Sandbox Code Playgroud)

我可以避免这种限制吗?

我只是想执行这样的事情:

sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
Run Code Online (Sandbox Code Playgroud)

我曾尝试defineGetterdefineSetter方法拦截电话,但它是一个单调乏味的工作,因为我必须定义所有属性和我的目标是不知道未来的属性.

javascript session-storage

140
推荐指数
5
解决办法
24万
查看次数

有没有方法用Handlebars.js迭代地图?

使用Handlebars.js迭代数组很容易:

{{#each comments}}
<div class="comment">
  <h2>{{title}}</h2>
  {{{{url}}}
</div>
{{/each}}
Run Code Online (Sandbox Code Playgroud)

和一个像这样的数组:

{
  comments: [
   { url: "http://www.yehudakatz.com", title: "Katz Got Your Tongue" },
   { url: "http://www.sproutcore.com/block", title: "SproutCore Blog" }, 
  ]
}
Run Code Online (Sandbox Code Playgroud)

但我没有找到迭代地图的方法,如:

{
  headers: { 
     "Host": "www.example.com", 
     "Location": "http://www.example.com",

     ... Much more map items ... 
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有方法用Handlebars.js迭代地图?或者我必须重新构建对象,如:

{
  headers: [
   { key: "Host", value: "www.example.com" },
   { key: "Location", value: "http://www.example.com" }, 
  ]
}
Run Code Online (Sandbox Code Playgroud)

templates handlebars.js

12
推荐指数
3
解决办法
1万
查看次数