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

JavaScript对象方法中this关键字问题:为何console.log返回undefined?

问题解答

你并没有错误使用this关键字,问题的核心是你压根没调用过calcAge方法——这个方法里的代码只有被执行时,才会给myDetails对象添加age属性。你直接去访问myDetails.age的时候,这个属性还不存在,所以控制台返回undefined。

怎么修复?

只需要在打印之前调用calcAge方法就行:

const myDetails = {
  name: "peter",
  birthYear: 1996,
  calcAge: function () {
    this.age = 2022 - this.birthYear;
    return this.age;
  },
  gender: "male"
}

// 先执行方法,创建age属性
myDetails.calcAge();
console.log(myDetails.age); // 现在会输出26

或者也可以直接调用方法并打印它的返回值,一步到位:

console.log(myDetails.calcAge()); // 直接输出26,同时也会给对象添加上age属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:25:25