什么是 Symbol?
Symbol 是 ES6 中新增的一种基本数据类型,表示独一无二的值。它是一种类似于字符串的数据类型,但是它的值是唯一且不可变的,可以用作对象属性的键值。
Symbol 的创建
Symbol 可以通过全局的 Symbol 函数来创建,每个 Symbol 值都是唯一的,即使它们使用相同的描述符。
const s1 = Symbol('foo'); const s2 = Symbol('foo'); console.log(s1 === s2); // false
Symbol 的应用
1. 对象属性的键值
Symbol 可以作为对象属性的键值,这样可以避免属性名冲突的问题。
-- -------------------- ---- ------- ----- --- - --- ----- - - ------------ ----- - - ------------ ------ - -------- ------ - -------- -------------------- -- ------- -------------------- -- -------
2. 避免属性被意外修改
Symbol 的另一个用途是定义对象的私有属性,这样可以避免属性被意外修改。
-- -------------------- ---- ------- ----- --- - --- ----- --- - -------------- -------- - ------ -------------------------- ------ - ------ -------- --------- ----- --- ------- - -------- -- --------- ------ -- ---- ---- -------- ----- -- ------ ---------------------- -- ----- --------------------- -- -------
3. 定义类的私有属性
Symbol 还可以用来定义类的私有属性,这样可以避免属性被子类或实例修改。
-- -------------------- ---- ------- ----- ----- - --------------- ----- ------ - ----------------- - ----------- - ----- - --------- - ------ ------------ - - ----- ------- ------- ------ - ----------------- ------ - ------------ ---------- - ------ - ---------- - ------ ----------- - - ----- ------ - --- -------------- ------------------------------ -- ----- -------------------------- -- --------- ----- ------- - --- ---------------- ---- ------------------------------- -- ------- --------------------------- -- --------- -------------------------------- -- --
4. 遍历对象的属性
Symbol 也可以用来定义对象的可遍历属性。
-- -------------------- ---- ------- ----- --- - - ------------------ --------- -- - ----- -- ----- -- ----- -- - -- --- ------ ----- -- ---- - ------------------- -- - - - -
总结
Symbol 是 ES6 中新增的一种基本数据类型,表示独一无二的值。它可以作为对象属性的键值,避免属性名冲突的问题;也可以用来定义对象的私有属性,避免属性被意外修改;还可以用来定义类的私有属性,避免属性被子类或实例修改;最后,Symbol 也可以用来定义对象的可遍历属性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65582bd5d2f5e1655d264347