You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用类似{*}的ECMAScript解构语法一次性获取对象全部元素?

有没有一次性解构对象全部属性的语法?

嘿,好问题!遗憾的是,JavaScript里并没有像const {*} = testObject这样的语法,能一次性把对象的所有属性直接解构为单独的变量。对象解构的设计初衷就是要求你明确指定要提取的属性名——毕竟如果凭空冒出一堆来源不明的变量,后续代码维护起来会非常混乱,可读性也大打折扣。

不过如果确实需要把对象的所有属性转为单独变量,有几种替代方案可以参考:

方案1:手动列出所有属性(最推荐)

这是最规范、最清晰的写法,虽然要多写几行,但对后续维护友好:

const testObject = {obj1:1, obj2:2, obj3:3};
const {obj1, obj2, obj3} = testObject;

方案2:用剩余语法打包剩余属性(非单独变量)

如果对象属性很多,你可以先提取几个常用的,剩下的打包到一个变量里管理,但这不是把所有属性拆成单独变量:

const testObject = {obj1:1, obj2:2, obj3:3, obj4:4};
const {obj1, ...rest} = testObject;
// rest 会包含 obj2、obj3、obj4,值为 {obj2:2, obj3:3, obj4:4}

方案3:动态创建变量(不推荐,慎用)

如果实在要动态把所有属性转为变量,可以用Object.entries配合循环实现,但这种方式会污染当前作用域(比如浏览器里的window,Node.js里的globalThis),而且代码可读性极差,生产环境不建议这么用:

const testObject = {obj1:1, obj2:2, obj3:3};
for (const [key, value] of Object.entries(testObject)) {
  globalThis[key] = value; // 挂载到全局作用域
}
// 现在可以直接用 obj1、obj2、obj3,但这种写法非常不规范

总的来说:如果对象属性固定且数量不多,手动解构是最佳选择;如果属性多且不需要单独使用,剩余语法打包更合适;动态创建变量尽量避免,除非是特殊的临时场景。

内容的提问来源于stack exchange,提问作者Sahandevs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:05:54