For AI agents: the complete documentation index is available at /tc39-atlas/llms.txt, the full documentation bundle is available at /tc39-atlas/llms-full.txt, and this page is available as Markdown at /tc39-atlas/proposals/year/2018/proposal-object-rest-spread.md.
  • 简体中文
  • Rest/Spread Properties S4

    中文标题:剩余/展开属性

    提案概览
    提案速览

    该提案扩展了解构和对象字面量语法,以支持剩余属性和展开属性,与数组的剩余和展开相对应。它解决了从对象中轻松提取剩余属性或合并对象的需求。

    Note

    以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。

    ECMAScript 的对象剩余/展开属性

    ECMAScript 6 为数组解构赋值引入了剩余元素,并为数组字面量引入了展开元素

    本提案为对象解构赋值引入了类似的剩余属性,并为对象字面量引入了展开属性

    规范

    规范

    剩余属性

    剩余属性收集那些未被解构模式选中的剩余的自身可枚举属性键。这些键及其值会被复制到一个新对象上。

    let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
    x; // 1
    y; // 2
    z; // { a: 3, b: 4 }

    展开属性

    对象初始化器中的展开属性会将提供的对象中的自身可枚举属性复制到新创建的对象上。

    let n = { x, y, ...z };
    n; // { x: 1, y: 2, a: 3, b: 4 }

    转译器

    Babel

    Bublé

    JSTransform

    TypeScript

    本提案的状态

    这是一个针对 ECMAScript 的 Stage 4 提案。

    已知问题

    本提案仅遍历__自身__属性。查看为什么这很重要。