在 ES6/ES2015 中使用 Symbol

ES6/ES2015 引入了一种新的基本数据类型 SymbolSymbol 是表示唯一标识符的数据类型,用于标识对象的属性名,避免命名冲突,也可以用作私有属性。

创建 Symbol

创建一个 Symbol 可以使用 Symbol() 方法。

示例代码:

可以通过传递可选的字符串来标记 Symbol。这个字符串仅用于调试或调用 .toString() 方法。

示例代码:

使用 Symbol 作为对象属性

通过将 Symbol 作为对象的属性名,可以避免属性名的冲突。当使用 Object.keys() 方法列出对象的属性时,Symbol 属性不会被列出,也不会被 for-in 循环遍历。

示例代码:

使用全局 Symbol 注册表

通过 Symbol.for() 方法,可以在全局 Symbol 注册表中注册 Symbol,然后可以在整个应用程序中重用这些 Symbol

示例代码:

内置 Symbol

ES6/ES2015 中有许多内置的 Symbol,以及一些在类和对象中使用的特殊 Symbol。以下是一些常见的内置 Symbol

  • Symbol.iterator:一个方法,返回对象的默认迭代器,用于支持 for-of 循环语句。
  • Symbol.species:一个方法,返回创建实例对象的函数,用于继承自内置对象的子类。
  • Symbol.matchSymbol.replaceSymbol.searchSymbol.split:用于正则表达式方法。

示例代码:

总结

通过在对象中使用 Symbol 属性名,可以避免属性名冲突,并且可用于实现私有属性。Symbol.for() 方法可以用于创建全局 Symbol,以便整个应用程序中都重用这些 Symbol

建议在使用 Symbol 时,应将其作为常量声明,并使用描述性名称进行命名,以提高代码的可读性和维护性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654a46b87d4982a6eb46b67f


纠错
反馈