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
相关产品推荐
相关产品推荐

