Symbol类型

Symbol类型

symbol 是一种基本数据类型 ( primitive data type)。 Symbol()函数会返回 symbol类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的symbol注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:" new Symbol()"。
每个从 Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的
——MDN

Symbol

“Symbol” 值表示唯一的标识符。
可以使用 Symbol() 来创建这种类型的值:

// name 是 symbol 的一个实例化对象
let name = Symbol();

创建symbol值时,可以给Symbol一个描述:

let name = Symbol('name');

另外,需要注意的是,new Symbol()语法是不受支持的。

“隐藏”属性

如果对象的某个属性是Symbol类型,那么:
1、该属性在对对象的属性进行for...in循环时会被跳过;
2、Object.keys()的结果中不会包含该属性。
所以,如果我们想要向某个第三方库的对象添加一个属性,我们可以创建一个 Symbol类型的属性,由于Symbol 属性不会出现在 for..in 循环中,因此它不会意外地被与其他属性一起处理。并且,它不会被直接访问,因为第三方库的脚本没有我们的 symbol。因此,该属性将受到保护,防止被意外使用或重写。

全局Symbol

部分内容参考自:https://zh.javascript.info/sy...

你可能感兴趣的:(javascript)