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
相关产品推荐
相关产品推荐

