可以在LocalStorage

时间:2017-11-13 11:56:35

标签: javascript ecmascript-6 local-storage

使用ES6 Symbol作为LocalStorage中键/值对的键时,我们是否可以在重新加载页面后仍然访问它?

我发现this tutorial声称在使用Symbol.for时可以这样做,但到目前为止我没有成功,当我尝试检索LocalStorage键/值对时得到undefined

作为一个附带问题:在这里使用Symbols是否有意义?

1 个答案:

答案 0 :(得分:3)

您可以将符号用作对象中的键 - 这最终是他们的目的。但是localStorage不是你的典型对象。它有一个API来设置/获取商店中的值,您共享的教程没有使用:localStorage.{set,get}Item()

不幸的是localStorage不接受符号作为键,只接受字符串。所以真正的答案是否定的,你不能在LocalStorage中使用Symbols作为键,但是......

可以执行以下操作。它实际上并不使用Symbol作为键,而是使用符号toString()表示:

const sym = Symbol.for('Hello').toString()
localStorage.setItem(sym, 'World')
document.write('Hello, ' + localStorage.getItem(sym))

[Check it out on jsbin.com]

  

作为一个附带问题:在这里使用符号是否有意义?

我想你可以使用保留的符号(例如Symbol.iterator)来扩展localStorage全局的功能。但除此之外,还有那种。