为什么JavaScript访问jack对象的age属性返回undefined?
问题根因
- 对象
jack的age属性,是在calcAge方法执行的时候才会被动态添加到对象上的,你当前的代码全程没有主动调用jack.calcAge(),所以jack对象上根本不存在age属性,访问不存在的对象属性默认返回undefined。
修复方案
方案1:访问前先主动调用计算方法
jack = { name: 'Jack', birthYear: 1992, calcAge: function () { this.age = 2021 - this.birthYear; return this.age; } }; // 先调用计算方法生成age属性 jack.calcAge(); console.log(jack.age); // 输出29
方案2:改用getter访问器实现自动计算
如果不想每次都手动调用方法,可以直接把年龄定义为getter属性,访问时会自动执行计算逻辑:
const jack = { name: 'Jack', birthYear: 1992, // 定义age的getter访问器 get age() { return 2021 - this.birthYear; } }; // 直接访问即可拿到计算结果 console.log(jack.age); // 输出29
内容的提问来源于stack exchange,提问作者jtodd334
相关产品推荐
相关产品推荐

