Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在本地存储中使用ES6符号_Javascript_Ecmascript 6_Local Storage - Fatal编程技术网

Javascript 是否可以在本地存储中使用ES6符号

Javascript 是否可以在本地存储中使用ES6符号,javascript,ecmascript-6,local-storage,Javascript,Ecmascript 6,Local Storage,当使用ES6符号作为LocalStorage中的键/值对的键时,我们是否仍可以在重新加载页面后访问它 我发现,当使用Symbol.for时,它声称这是可能的,但到目前为止,我没有成功,当我尝试检索LocalStorage键/值对时,得到了一个未定义的 作为一个附带问题:在这里使用符号有意义吗?您可以将符号用作对象中的键-这是它们的最终目的。但是localStorage不是您的典型对象。它有一个API来设置/获取存储中的值,您共享的教程没有使用它:localStorage.{set,get}Ite

当使用ES6
符号
作为
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中也使用这些符号。