介绍JavaScript中Symbol
原文:An Introduction to Symbols in JavaScript
Symbol提供了一种在对象中创建隐藏属性的方式。
Symbol和number
、boolean
、null
一样,是JavaScript中一种原始数据类型,常被用于避免属性名冲突或模拟对象私有属性。
调用全局函数Symbol()
可以创建一个Symbol:
1 | const sym = Symbol(); |
Symbol()
函数接收一个字符串参数description
,在打印Symbol时会显示出来。
1 | const sym = Symbol('my description'); |
主要特性
Symbol有两个主要特性。其一是任意两个Symbol都不相等,即使有相同的description
参数,也不相等。
1 | Symbol() === Symbol(); // false |
其二是对象的属性名可以用Symbol。通常,对象的属性名要么是Symbol要么是字符串。
1 | const test = Symbol('test'); |
由于两个Symbol必然不相等,那么除非可以访问到Symbol,否则一段代码是无法访问Symbol所代表的属性的。这样,用Symbol可以很方便的创建隐藏属性,只能在特定的函数中进行访问。
1 | function addSymbol(obj) { |
Symbol在JSON.stringify()
的输出中也会被排除掉,非常适合存储只在编码过程中需要用到,而终端用户不会看到信息。
本教程对您有帮助吗?来GitHub仓库点个星支持我们吧!