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

为什么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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:54:03