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

原型函数调用同原型函数时,如何正确访问this对象?

问题原因

你在nope函数里直接调用Messages.prototype.works()时,works内部的this指向的是**Messages.prototype这个原型对象**,而非你创建的dbg实例。原型对象上不存在elem属性,所以会提示this.elem为undefined。

而直接调用dbg.works()能正常运行,是因为通过实例调用原型方法时,JS会自动把方法内的this绑定到当前实例上。

解决办法

有两种简单的修复方式:

方式一:通过当前实例的this调用works

直接在nope里用this.works(),此时this指向dbg实例,调用后works内的this也会自动绑定到实例:

Messages.prototype['nope'] = function(...args) {
  this.works('noper', ...args);
}

方式二:用call手动绑定this

如果一定要直接调用原型上的works方法,可以用call把this强制绑定为当前实例:

Messages.prototype['nope'] = function(...args) {
  Messages.prototype.works.call(this, 'noper', ...args);
}
验证效果

修改后重新运行代码,dbg.nope('not', 'this')就能正常把内容追加到#Messages元素中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:22:52