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

JavaScript为对象添加nameLength方法无法获取姓名长度问题

问题原因

你编写的方法逻辑本身没有语法错误,无法获取姓名长度的核心原因是没有将该方法正确关联到employee对象上:

  • 如果你是直接单独写nameLength: function(){...}这段代码,它属于对象字面量的属性语法,脱离对象单独声明会直接报错
  • 就算你把它改成普通函数声明,调用时this会指向全局环境(浏览器端为window,Node.js端为global),全局环境不存在对应name属性,读取length自然会返回undefined或者报错。
    只有方法作为对象的属性被调用时,内部this才会指向当前对象,才能正确读取到employee的name属性。

修正方案

提供两种常用的实现方式:

方案1:声明对象时直接内置方法

// 给定对象:
var employee = {
  name: "John Smith",
  job: "Programmer",
  age: 31,
  // 直接把方法写在对象属性里
  nameLength: function(){
    console.log(this.name.length);
  }
}

// 调用测试
employee.nameLength() // 控制台输出10

方案2:已声明对象后续追加方法

如果employee对象已经提前声明完成,用点语法给对象追加方法即可:

// 原有对象声明
var employee = {
  name: "John Smith",
  job: "Programmer",
  age: 31
}

// 追加nameLength方法
employee.nameLength = function(){
  console.log(this.name.length);
}

// 调用测试
employee.nameLength() // 控制台输出10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:36:03