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

JavaScript对象方法中新增属性后访问返回undefined问题求解

问题根因

你定义的calcAge方法内部的赋值逻辑,仅在方法被主动调用时才会执行。你没有调用过calcAge的情况下,rodrigo对象上从始至终都不存在age属性,访问不存在的对象属性自然返回undefined。另外你贴的代码片段最后遗漏了对象闭合的},实际运行时需要先补上。

修复方式
  • 方式1:需要使用age属性前,先调用一次calcAge方法即可
const rodrigo = {
    firstName: 'Rodrigo',
    lastName: 'Pinto',
    job: 'Programmer',
    birthYEar: '1997',
    friends: ['Michael', 'Scott', 'Jim'],
    hasDriversLicense: true,

    calcAge: function () {
        this.age = 2021 - this.birthYEar;
        return this.age;
    }
}

// 先调用方法完成age属性的赋值
rodrigo.calcAge();
// 此时访问age就能拿到正确值
console.log(rodrigo.age); // 输出24
  • 方式2:如果希望对象初始化完成就自带age属性,可以在对象定义完成后立即调用一次calcAge,或者直接把age的计算逻辑写在对象属性定义处。
优化建议

你当前birthYEar属性存储的是字符串类型,虽然减法运算会自动触发隐式类型转换得到正确结果,但还是建议改成数字类型1997,避免后续其他运算出现预期外的类型转换问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:48:03