📅  最后修改于: 2020-10-25 10:37:24             🧑  作者: Mango
ES6引入了一种称为Symbol的新原始类型。它们有助于在JavaScript程序中实现元编程。
const mySymbol = Symbol()
const mySymbol = Symbol(stringDescription)
符号只是一块内存,您可以在其中存储一些数据。每个符号将指向不同的存储位置。 Symbol()构造函数返回的值是唯一且不可变的。
让我们通过一个例子来理解这一点。最初,我们创建了两个没有描述的符号,然后创建了具有相同描述的符号。在两种情况下,当比较符号时,相等运算符都将返回false。
上面代码的输出将如下所述-
symbol
false
Symbol(hello)
Symbol(hello)
false
Sr.No | Property & Description |
---|---|
1 | Symbol.for(key)
searches for existing symbols in a symbol registry with the given key and returns it, if found. Otherwise, a new symbol gets created in the global symbol registry with this key. |
2 | Symbol.keyFor(sym)
Retrieves a shared symbol key from the global symbol registry for the given symbol. |
可以将符号与类一起使用以定义类中的属性。优点是,如果property是如下所示的符号,则只有在知道符号名称的情况下,才能在包外部访问该属性。因此,当将符号用作属性时,数据被大量封装。
以上代码的输出将如下所示-
Bike {Symbol(): "red", Symbol(): "honda", Symbol(): "cbr"}
red