了解JavaScript符号的简单教程
符号是JavaScript的一种原始数据类型,与字符串、数字、布尔值、空值和未定义一起。
它是在ECMAScript 2015中引入的,所以就在几年前。
这是一个非常奇特的数据类型。一旦你创建了一个符号,它的值就会被保存为私有,供内部使用。
创建后剩下的就是符号的引用。
你通过调用Symbol() 全局工厂函数来创建一个符号。
const mySymbol = Symbol()
每次你调用Symbol() ,我们都会得到一个新的和唯一的符号,保证与所有其他符号不同。
Symbol() === Symbol() //false
你可以向Symbol() 传递一个参数,该参数被用作符号描述,仅在调试时有用。
console.log(Symbol()) //Symbol()
console.log(Symbol('Some Test')) //Symbol(Some Test)
符号经常被用来识别对象的属性。
通常是为了避免属性之间的名称冲突,因为没有一个符号是等于另一个的。
或者添加用户不能覆盖的属性,不管是故意的还是没有意识到的。
例子。
const NAME = Symbol()
const person = {
[NAME]: 'Flavio'
}
person[NAME] //'Flavio'
const RUN = Symbol()
person[RUN] = () => 'Person is running'
console.log(person[RUN]()) //'Person is running'
符号不是枚举的,这意味着它们不会被包含在一个for..of 或for..in 循环中。
符号不属于 Object.keys()或 Object.getOwnPropertyNames()结果的一部分。
你可以使用方法访问分配给一个对象的所有符号。 Object.getOwnPropertySymbols()方法访问分配给一个对象的所有符号。