什么是Symbol?
Symbol是ES6引入的新的原始数据类型,表示独一无二的值。
基本特点:
-
每个Symbol值都是唯一的,即使传入相同的参数
-
不能使用new操作符,直接调用Symbol()创建
-
可以用作对象的属性名,避免属性名冲突
主要用途:
-
创建唯一的属性名,避免命名冲突
-
实现私有属性(虽然不完全私有)
-
定义对象的特殊行为,如迭代器
内置Symbol:
-
Symbol.iterator:定义对象的默认迭代器
-
Symbol.toPrimitive:定义对象转换为原始值的行为
-
Symbol.toStringTag:定义对象的字符串描述
使用场景:
-
库开发时避免属性名冲突
-
实现迭代器模式
-
定义对象的特殊行为
注意:
-
Symbol作为属性名时不会被for…in循环遍历
-
需要通过Object.getOwnPropertySymbols获取Symbol属性
-
可以传入字符串作为描述,但主要用于调试
Symbol为JavaScript提供了创建唯一标识符的能力,是ES6中重要的元编程特性。