Javascript 是否可以在本地存储中使用ES6符号
当使用ES6Javascript 是否可以在本地存储中使用ES6符号,javascript,ecmascript-6,local-storage,Javascript,Ecmascript 6,Local Storage,当使用ES6符号作为LocalStorage中的键/值对的键时,我们是否仍可以在重新加载页面后访问它 我发现,当使用Symbol.for时,它声称这是可能的,但到目前为止,我没有成功,当我尝试检索LocalStorage键/值对时,得到了一个未定义的 作为一个附带问题:在这里使用符号有意义吗?您可以将符号用作对象中的键-这是它们的最终目的。但是localStorage不是您的典型对象。它有一个API来设置/获取存储中的值,您共享的教程没有使用它:localStorage.{set,get}Ite
符号
作为LocalStorage
中的键/值对的键时,我们是否仍可以在重新加载页面后访问它
我发现,当使用Symbol.for
时,它声称这是可能的,但到目前为止,我没有成功,当我尝试检索LocalStorage键/值对时,得到了一个未定义的
作为一个附带问题:在这里使用
符号有意义吗?您可以将符号用作对象中的键-这是它们的最终目的。但是localStorage
不是您的典型对象。它有一个API来设置/获取存储中的值,您共享的教程没有使用它:localStorage.{set,get}Item()
不幸的是,localStorage
不接受符号作为键,只接受字符串。所以真正的答案是不,你不能在本地存储中使用符号作为键,但是
您可以执行以下操作。它实际上并没有使用符号作为键,而是使用符号toString()
表示:
const sym = Symbol.for('Hello').toString()
localStorage.setItem(sym, 'World')
document.write('Hello, ' + localStorage.getItem(sym))
[]
作为一个附带问题:在这里使用符号有意义吗
我想您可以使用保留符号(例如,Symbol.iterator
)来扩展localStorage
全局存储的功能。但这不是重点。你能分享一个它不起作用的例子吗?例如,在jsbin.com.So上,这意味着您要将值保存在一个键下,该键是一个写有“Symbol(isShown)”的字符串?那么,用这个代替一个写着“isShown”的键有什么好处呢?@sjbyse None。这就是为什么您不应该这样做。@SJBUSE没有优势,但您可能在应用程序中的对象的其他地方使用了符号,为了保持一致性,您希望在LocalStorage中也使用这些符号。