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

如何解决JS跨类传递实例方法时this指向丢失无法访问属性的问题

问题原因

你遇到的是典型的JavaScript类方法this指向丢失问题:当你直接把exportModule.exportGeometry作为独立函数传递给Loading构造函数时,方法和原Export实例的绑定关系会断裂。在Loading内部执行Fun()时,函数内部的this不再指向原来的Export实例,自然无法访问挂载在实例上的editor属性。

解决方法

三个可选方案,选任意一种即可解决问题:

方案1:传递时用箭头函数包裹(最常用,无需修改原有类代码)

修改HamburgerMenu.js中创建Loading实例的传参部分,用箭头函数包裹要执行的方法,箭头函数会继承外层上下文的this指向:

var loading = new Loading('Please Wait..', 'Preparing to download ...', 
  () => exportModule.exportGeometry()
);

方案2:用bind手动绑定实例

同样修改HamburgerMenu.js的传参,通过bind方法手动把exportGeometry的this绑定到对应的Export实例上:

var loading = new Loading('Please Wait..', 'Preparing to download ...', 
  exportModule.exportGeometry.bind(exportModule)
);

方案3:将Export类的方法改为箭头函数写法(永久绑定this,适合方法不需要动态修改this的场景)

修改Export.js里的exportGeometry定义,直接把方法写成箭头函数,这样该方法的this会永久绑定到类实例,传递出去也不会丢失指向:

class Export {
  constructor(editor) {
    this.editor = editor;
  }

  exportGeometry = () => {
    var object = this.editor.selected;
    // 原有逻辑保持不变
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:05