相关疑难解决方法(0)

ECMAScript 6中的Symbol.for(字符串)

我花了一段时间,但我终于弄明白ECMAScript 6中符号的用途是什么:在将属性附加到共享对象时避免名称冲突 - HTML元素例如(如果你遇到同样的问题,我推荐这篇文章. )

但后来我偶然发现了Symbol.for().显然,ECMAScript 6将维护一个全局符号注册表,您可以通过提供符号描述来使用此函数进行查询.再来?如果我使用符号来避免名称冲突,为什么我要使用除我自己之外的代码来使用它们呢?(*)我如何避免全局注册表中的名称冲突?共享符号似乎完全颠覆了这个概念,而全球注册表则更是如此.

(*)是的,我知道符号不是真正的私有,但除此之外.

javascript symbols ecmascript-6

10
推荐指数
2
解决办法
523
查看次数

Javascript ES6 中注册表符号 (Symbol.for) 的用途是什么?

JS ES6 中有注册表符号这样的东西(可在这篇 Mozilla 文章中找到)。

它与Symbol()有关 Stack Overflow 的相关问题)不同,可以通过Symbol.for(data).

打电话Symbol.for(string)。这将访问一组称为符号注册表的现有符号。与由 定义的唯一符号不同Symbol(),符号注册表中的符号是共享的。如果你调用Symbol.for("cat")三十次,它每次都会返回相同的符号。当多个网页或同一网页中的多个模块需要共享一个符号时,注册表非常有用。

我一直在搜索关于这个主题的信息,我在 Stack Overflow 上读过类似的问题(有什么是“全局符号注册表”?但它没有涵盖这个问题 - 为什么使用注册表符号而不是字符串)。

尽管我似乎已经获得了(几乎)关于用 定义的唯一符号的所有信息Symbol(),但注册表符号 ( Symbol.for()) 对我来说根本没有多大意义。

我的意思是,看看那里的例子:

Symbol.for('foo'); // create a new global symbol
Symbol.for('foo'); // retrieve the already created symbol

// Same global symbol, but not locally
Symbol.for('bar') === Symbol.for('bar'); // true

//ADDED BY ME
Symbol.for('far') === Symbol.for('bar'); …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

5
推荐指数
0
解决办法
259
查看次数

标签 统计

ecmascript-6 ×2

javascript ×2

symbols ×1