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

JavaScript中调用对象方法向其内部数组push值不生效如何解决

问题原因

createMenu函数每次被调用时,内部都会生成一个全新的独立对象返回。现有代码一共两次调用了createMenu函数,两次生成的对象互不关联:

  • 第一次调用createMenu().order('pizza')时,仅对第一个临时生成的对象的consumption数组插入了pizza值,该临时对象没有被存储,调用完成后直接被回收
  • 第二次调用createMenu().consumption打印时,生成的是第二个全新对象,其consumption数组默认是空数组,因此无法得到预期输出
解决方法

将createMenu函数返回的对象实例存储到变量中,所有操作都基于同一个实例执行即可,正确代码如下:

const createMenu = () => {
  const obj = {
    consumption: [],
  };

  const order = (item) => {
    obj.consumption.push(item);
  };
  obj.order = order;

  return obj;
};

// 存储返回的实例对象
const menuInstance = createMenu();
// 基于同一个实例调用order方法
menuInstance.order('pizza');
// 打印同一个实例的consumption属性
console.log(menuInstance.consumption); // 输出:['pizza']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 22:57:02