ECMAScript 2016 中的 Symbol 类型及其使用示例

阅读时长 4 分钟读完

简介

ECMAScript 2016(ES2016)是 JavaScript 语言的一次更新,其中引入了 Symbol 类型。Symbol 是一种新的原始数据类型,表示唯一的、不可变的值。它可以用来创建对象属性的键,以避免属性名的冲突。

Symbol 类型的特点

  1. Symbol 值是唯一的,即使创建了多个相同参数的 Symbol 值,它们也不相等。
  2. Symbol 值是不可变的,一旦创建就不能修改。
  3. Symbol 值可以作为对象属性的键。
  4. Symbol 值可以用于定义私有属性。

Symbol 类型的使用示例

1. 作为对象属性的键

在上面的示例中,我们使用 Symbol 类型作为对象属性的键。注意,我们使用了 Symbol('key') 创建了一个新的 Symbol 值,该值作为属性的键。通过 obj[symbolKey] = 'value',我们将该 Symbol 值作为键,'value' 作为值,添加到了 obj 对象中。最后,我们可以通过 obj[symbolKey] 获取该值。

2. 避免属性名的冲突

在上面的示例中,我们使用 Symbol 类型作为对象属性的键。注意,我们使用了 Symbol('name') 创建了一个新的 Symbol 值,该值作为属性的键。通过 obj1[symbolKey] = 'obj1',我们将该 Symbol 值作为键,'obj1' 作为值,添加到了 obj1 对象中。同样的,我们也将该 Symbol 值作为键,'obj2' 作为值,添加到了 obj2 对象中。这样,我们就避免了属性名的冲突。

3. 定义私有属性

-- -------------------- ---- -------
----- --- - ----------- -
  ----- --------- - ------------------
  ------ -
    ----------- ---------- -
      ------ ----------------
    --
    ----------- --------------- -
      --------------- - ------
    -
  --
-----

------------------------
------------------------------ -- -------
------------------------- -- ---------

在上面的示例中,我们使用 Symbol 类型定义了一个私有属性。注意,我们使用了 Symbol('private') 创建了一个新的 Symbol 值,该值作为属性的键。通过闭包,我们将该 Symbol 值作为私有属性添加到了 obj 对象中。通过 obj.setPrivate('value'),我们可以设置私有属性的值为 'value'。通过 obj.getPrivate(),我们可以获取私有属性的值。而通过 obj.private,我们无法获取私有属性的值,因为该属性并不存在。

总结

Symbol 是 ECMAScript 2016 中引入的一种新的原始数据类型,它可以用来创建对象属性的键,以避免属性名的冲突,并且可以用于定义私有属性。Symbol 类型的特点是唯一、不可变。在实际开发中,我们可以通过 Symbol 类型更好地管理对象属性,避免属性名的冲突,同时也可以更好地实现封装和隐藏。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/662bc8d3d3423812e494e257

纠错
反馈