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

如何在JavaScript对象的自身方法中修改该对象的属性

对象方法中修改自身属性的实现方案

你给出的示例代码中使用箭头函数作为对象方法,这里存在JS的this绑定逻辑的问题:箭头函数不会绑定属于自身的this,它的this会继承自定义时的外层作用域(全局定义的场景下this指向window/严格模式下为undefined,无法访问到dog对象本身)。
要实现需求可以参考以下几种方案:

  • 方案1:替换为普通函数,通过this访问当前对象(最推荐)
let dog = {
  name: 'shar-pei',
  changeName: function(newName) {
    // 普通函数作为对象方法调用时,this默认指向调用该方法的对象
    this.name = newName
  }
}

// 测试效果
dog.changeName('chow chow')
console.log(dog.name) // 输出:chow chow
  • 方案2:直接引用对象变量名(仅适合固定不会被重新赋值的对象,不推荐)
let dog = {
  name: 'shar-pei',
  changeName: (newName) => {
    // 直接通过变量名访问对象,缺点是如果后续dog变量被重新赋值,会指向错误的目标
    dog.name = newName
  }
}
  • 方案3:基于类创建实例的场景,同样通过this访问属性
class Dog {
  constructor(name) {
    this.name = name
  }
  changeName(newName) {
    this.name = newName
  }
}

const dog = new Dog('shar-pei')
dog.changeName('pug')
console.log(dog.name) // 输出:pug

注意:不要用箭头函数定义对象方法、类原型方法这类需要访问实例自身属性的逻辑,箭头函数的this绑定特性会导致预期外的行为。
内容的提问来源于stack exchange,提问作者nandesuka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 19:15:10