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

JavaScript中更新对象后Object.entries无法正常工作的问题

问题原因

你用Object.defineProperty给selectedObjects添加属性时,默认生成的属性是不可枚举的。虽然浏览器控制台会显示对象的所有属性(包括不可枚举的),但Object.entries()只会遍历对象的可枚举属性,所以遍历不到你添加的这些属性。

解决方案

有两种简单的修复方式:

方式1:直接使用对象赋值语法(推荐)

不需要用Object.defineProperty,直接通过属性赋值添加,这样生成的属性默认就是可枚举的:

outerDiv.onclick = function () {
    selectedObjects[key] = value;
    createSelectedDivs();
};

方式2:在Object.defineProperty中显式设置enumerable: true

如果一定要用Object.defineProperty,需要手动开启可枚举配置:

outerDiv.onclick = function () {
    Object.defineProperty(selectedObjects, key, {
        value: value,
        enumerable: true // 关键配置,让属性可被枚举
    });
    createSelectedDivs();
};

这样修改后,Object.entries(selectedObjects)就能正常遍历到你添加的属性,对应的DOM元素也会正确渲染出来。

内容的提问来源于stack exchange,提问作者Bera Bıyık

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:59:15