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

JavaScript:使用方括号表示法创建对象后方法调用返回undefined问题咨询

问题分析与解决方案

嗨,我来帮你排查下代码里的问题,你遇到的undefined主要是两个原因导致的:

  • this指向错误:你在document.write里用的*this*["Full Name"],这里的*this*在全局浏览器环境下指向的是window对象,而不是你创建的employee对象,自然找不到这个方法,所以返回undefined。你应该调用employee["Full Name"](),注意要加括号执行这个函数哦。
  • 字符串拼接缺少空格:就算你调用对了方法,当前代码里return this["First Name"] + this["Last Name"]会把名字直接连在一起变成JoshSmith,而不是你想要的Josh Smith,需要在中间加个空格。

修正后的代码

var employee = { 
  ["Last Name"]: "Smith", 
  ["First Name"]: "Josh", 
  ["Full Name"]: function() { 
    return this["First Name"] + " " + this["Last Name"]; 
  } 
}; 
document.write("Good day " + employee["Full Name"]());

额外优化建议

如果是ES6及以上的运行环境,你可以用更简洁的语法来写这段代码,可读性会更好:

const employee = { 
  ["Last Name"]: "Smith", 
  ["First Name"]: "Josh", 
  // 简洁的方法定义语法
  ["Full Name"]() { 
    // 模板字符串拼接更直观
    return `${this["First Name"]} ${this["Last Name"]}`; 
  } 
}; 
// 用console.log比document.write更推荐哦
console.log(`Good day ${employee["Full Name"]()}`);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:20:09