使用ES6 Symbol
作为LocalStorage
中键/值对的键时,我们是否可以在重新加载页面后仍然访问它?
我发现this tutorial声称在使用Symbol.for
时可以这样做,但到目前为止我没有成功,当我尝试检索LocalStorage键/值对时得到undefined
。
作为一个附带问题:在这里使用Symbols
是否有意义?
答案 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))
作为一个附带问题:在这里使用符号是否有意义?
我想你可以使用保留的符号(例如Symbol.iterator
)来扩展localStorage
全局的功能。但除此之外,还有那种。