在 ES6 中,引入了 Symbol 数据类型,它是一种新的原始数据类型,用于表示独一无二的值。在 ES10 中,Symbol 对象得到了更多的应用,可以用于创建私有属性、迭代器和自定义对象方法等方面。
创建 Symbol 对象
在 ES10 中,我们可以使用 Symbol()
函数来创建一个新的 Symbol 对象。每个 Symbol 对象都是独一无二的,因为它们的值是唯一的。
下面是一个简单的示例代码:
const mySymbol = Symbol(); console.log(typeof mySymbol); // "symbol"
使用 Symbol 对象创建私有属性
在 ES10 中,我们可以使用 Symbol 对象来创建私有属性,这些属性只能在对象内部访问,无法从外部访问。这可以保护对象的属性不被意外修改。
下面是一个示例代码:
-- -------------------- ---- ------- ----- ------ - - ----- ------ ---- --- ------------------- ------ -- ------------------------- -- ----- ------------------------ -- -- -------------------------------------- -- ---------
在上面的代码中,我们使用了一个 Symbol 对象来创建一个私有属性 gender
,它无法从对象外部访问。
使用 Symbol 对象创建迭代器
在 ES6 中,我们可以使用 for...of
循环来遍历数组和字符串。在 ES10 中,我们可以使用 Symbol 对象来创建自定义的迭代器,以便更好地控制迭代过程。
下面是一个示例代码:
-- -------------------- ---- ------- ----- ------- - --- -- --- ----- -------- - ---------------- ----------------- - ---------- - --- ----- - -- ------ - ----- ---------- - ------ ----- - -------------- - - ------ ----------------- ----- ----- - - - ----- ---- -- - -- -- --- ------ ---- -- -------- - ------------------ -
在上面的代码中,我们使用了一个 Symbol 对象来创建一个迭代器。我们将一个自定义的 next()
方法添加到数组的 Symbol.iterator 属性中,以便在 for...of
循环中使用。
使用 Symbol 对象创建自定义对象方法
在 ES10 中,我们可以使用 Symbol 对象来创建自定义对象方法。这些方法可以像普通方法一样调用,但是它们是独立的,不会与其他方法冲突。
下面是一个示例代码:
-- -------------------- ---- ------- ----- -------- - --------- ----- ------ - - ----- ------ ---- --- ----------- ---------- - --------------------- - - -- - - -------- - - ----- ------- - -- -------------------
在上面的代码中,我们使用了一个 Symbol 对象来创建一个自定义的对象方法。我们将这个方法添加到对象的 Symbol 属性中,以便在对象中调用。
总结
在 ES10 中,Symbol 对象得到了更多的应用,它可以用于创建私有属性、迭代器和自定义对象方法等方面。使用 Symbol 对象可以更好地保护对象的属性不被意外修改,更好地控制迭代过程,以及更好地创建独立的对象方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65654b91d2f5e1655de8ece2