稳妥 ES9: 使用对象升级现有代码

阅读时长 5 分钟读完

ES9 (ECMAScript 2018) 是 JavaScript 的最新标准之一,为开发者提供了更多的新功能和改进。本文将着重介绍 ES9 的一个重要新特性:对象的增强。

对象是 JavaScript 中最基本的数据结构之一。从 ES6 开始,JavaScript 引入了一些新的对象语法,如对象字面量的简写和箭头函数的支持,这些语法问题已经被广泛使用。ES9 对象增强带来了更多新功能和改进,具体来说,它提供了更好的可读性和可维护性,而不需要更改您现有的代码。本文将重点介绍 ES9 对象增强的三个功能:扩展运算符、对象属性顺序和异步迭代器。

扩展运算符

扩展运算符是一种简单的语法,可以将一个对象的属性分解成单独的变量。在 ES9 中,您可以使用扩展运算符来复制对象的所有属性:

假设您要从现有对象创建一个新对象,其中会添加一些属性。由于 JavaScript 中的对象是引用类型,因此,如果您直接深复制现有对象,那么新对象与现有对象将共享所有引用属性,因此对其进行修改可能会影响两个对象。使用扩展运算符,您可以轻松地复制一个对象,而不必担心引用问题。

以上代码会创建一个新的对象 newPerson,并在其中添加一个新属性"job",而不影响原始对象 person。

对象属性顺序

在过去,对象属性的顺序总是由开发人员创建对象时定义的顺序确定。在 ES9 中,对象的属性顺序已经标准化,并且不再由添加属性的顺序决定。

例如,如果您创建一个有序对象并将属性赋值给它,现在您可以确保在使用“for-in”循环时它们将按照您定义现有属性的顺序被读取。

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

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

使用扩展运算符和不带类似{...}的对象定义时,属性顺序关于定义的属性顺序是“随机”的:

这个 mixedObject 将按创建的顺序返回 start、end、1、2、0。

异步迭代器

在 ES7 中引入了 for-of 循环,它使您能够遍历集合类型的值,例如数组和字符串。ES9 中引入的异步迭代器允许您遍历集合值或异步数据控制的值(例如,与服务器上的接口交互)。异步迭代器通过 async 和 await 语法一起使用,使遍历异步数据变得更加容易。

为了使用异步迭代器,您需要实现一个迭代器方法和一个 async value 方法。然后,您可以使用不带参数的 for-await-of 循环来遍历异步数据的集合属性。

下面是一个迭代器方法的例子:

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

上面的 myAsyncIterator 对象具有一个 items 数组和一个 nextIndex 属性,它将被用于迭代数组中的一个值。此外,该对象还实现了 Symbol.asyncIterator 方法,该方法返回一个异步对象,该对象具有一个需要等待的 next 方法,每次调用返回值的 value 和 done 属性。

好了,下面是一个使用异步迭代器和 for-await-of 循环遍历对象的例子:

这将在每个迭代之间调用 await,以确保在下一个对象之前等待 1 秒钟,并且将打印 1 到 5。

结论

对于许多开发人员来说,ES9 对象增强是一种快速且省时的方式,以改进您现有代码的可读性和可维护性。其中的一些特性,如扩展运算符和更可预测的属性顺序,使代码更容易理解。同时,异步迭代器是一个重要的语言增强,它使异步编程在某些方面更加容易。以上这些是 ES9 的部分新特性,欢迎大家深入学习和探索。

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

纠错
反馈