前端 ES6 面试题, ️ES6 新增的 Symbol 基础数据类型有什么作用?
前端 ES6 面试题, ️ES6 新增的 Symbol 基础数据类型有什么作用?
QA
Step 1
Q:: ES6
中 Symbol 是什么?有什么特点?
A:: Symbol 是 ES6
新增的一种基础数据类型,用于创建独一无二的值。Symbol 值是唯一的,即使两个 Symbol 的描述相同,它们的值也不相等。Symbol 主要用于对象的属性名,保证不会与其他属性名发生冲突。
Step 2
Q:: Symbol 类型的实际应用场景有哪些?
A:: Symbol 通常用于定义对象的私有属性或方法,避免与其他库或代码中的属性名冲突。例如,可以用 Symbol 来定义类中的私有方法,或者作为枚举类型的标识符,确保值的唯一性。
Step 3
Q:: 如何创建一个 Symbol?如何为 Symbol 添加描述?
A:: 可以使用 Symbol()
函数创建一个 Symbol。如果希望为 Symbol 添加描述,可以在 Symbol()
函数中传入一个字符串参数,例如 let sym = Symbol('description');
。这个描述仅用于调试和输出时标识 Symbol,不能通过该描述来访问 Symbol 值。
Step 4
Q:: 如何在对象中使用 Symbol 作为属性名?
A:: 可以直接将 Symbol 作为对象的属性名。例如:let sym = Symbol('key'); let obj = { [sym]: 'value' };
。此时,obj[sym]
可以用来访问这个属性。使用 Symbol 作为属性名的属性不会被常规的 for...in
或 Object.keys()
枚举出来。
Step 5
Q:: Symbol.for 和 Symbol.
keyFor 的作用是什么?
A:: Symbol.for()
用于在全局 Symbol 注册表中创建或查找一个 Symbol,如果存在则返回该 Symbol,如果不存在则创建一个新的并返回。Symbol.keyFor()
则用于在全局注册表中查找某个 Symbol 的键值。