📜  ES6-符号

📅  最后修改于: 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