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

能否以[{}]声明JavaScript对象数组?是否需为元素单独声明对象?

问题解答

首先拆解你的代码逻辑:

  • club.player_DB = [{}] 仅在数组的索引0位置创建了一个空对象,所以你能直接给club.player_DB[0].code赋值——这个位置确实存在可操作的对象。
  • 但数组的索引1位置并未初始化,此时club.player_DB[1]的值是undefined,你尝试给undefined的code属性赋值,必然会抛出Cannot set properties of undefined这类错误。

结论:是的,必须为要使用的数组元素单独声明对象

不过你可以用几种更灵活的方式,不一定非要手动逐个赋值空对象:

方式1:初始化时直接创建多个空对象

club = {};
club.player_DB = [{}, {}]; // 提前创建两个空对象

club.player_DB[0].code = 44;
club.player_DB[1].code = 21;

console.log(club.player_DB[0].code+" "+club.player_DB[1].code); // 正常输出 44 21

方式2:给目标索引赋值空对象后再设置属性

就是你注释掉的那行代码,这是最直接的修复方式:

club = {};
club.player_DB = [{}];

club.player_DB[0].code = 44;
club.player_DB[1] = {}; // 先给索引1创建空对象
club.player_DB[1].code = 21;

console.log(club.player_DB[0].code+" "+club.player_DB[1].code);

方式3:使用push添加带属性的新对象

如果不确定需要多少元素,这种方式更灵活:

club = {};
club.player_DB = [{}];

club.player_DB[0].code = 44;
club.player_DB.push({ code: 21 }); // 直接添加包含code属性的对象

console.log(club.player_DB[0].code+" "+club.player_DB[1].code);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:45:59