通过函数调用对象字符串属性至控制台遇undefined问题求助
问题分析与修复方案
代码里的核心问题
- 你试图访问
pc.newPowerStatus.on,但newPowerStatus是对象的方法(函数),不是带on属性的对象,所以返回undefined。你要的电源状态是pc.powerOn属性。 run函数里的on变量未声明,调用pc.run()会直接报错。newPowerStatus函数原本只负责设置值,没有返回值,没法通过它获取状态。
修复后的代码(满足函数调用获取属性值的需求)
const pc = { brandname: "hp", modelName: "hp-221Gt", cpu: { brandname: "hp", motherBoard: "inteLiCore", raminGB: 4, rominGB: 1024, processore: "Octacore", processorMaxSpeedinGHz: 3.8, }, powerOn: "yes", // 新增逻辑:不传参时返回当前状态,传参则更新后返回 newPowerStatus: function (on) { if (on !== undefined) { this.powerOn = on; } return this.powerOn; }, // 修正run函数:调用newPowerStatus返回当前状态 run: function () { return this.newPowerStatus(); } }; // 原有正常打印 console.log(pc); console.log("The cpu I use has following specs : ", pc.cpu); // 正确打印电源状态的几种方式 console.log("Is the pc running : ", pc.powerOn); // 通过newPowerStatus函数获取状态 console.log("函数调用获取电源状态:", pc.newPowerStatus()); // 修改状态后用run函数获取 pc.newPowerStatus("no"); console.log("修改后通过run函数获取状态:", pc.run()); var show = "powerOn"; console.log(pc[show]);
关键修改说明
- 给
newPowerStatus函数增加返回逻辑,既可以设置状态,也能返回当前状态。 - 修正
run函数,避免未定义变量错误,让它返回当前电源状态。 - 移除错误的
pc.newPowerStatus.on访问,改用正确的属性或函数调用方式。
内容的提问来源于stack exchange,提问作者Aman Prakash Singh
相关产品推荐
相关产品推荐

