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

如何为实例对象绑定内部使用this关键字的自定义方法

解决方案

你的代码无法直接替换的核心原因是当前你为multiplex赋值时使用了箭头函数:箭头函数不绑定自身的this,它的this继承自外层作用域,永远不会指向当前的fakeWebSocket$$实例。

只要将箭头函数替换为普通函数表达式即可实现需求,普通函数的this会在调用时自动绑定到调用它的实例对象上:

const fakeWebSocket$$: WebSocketSubject<any> = new Subject<any>() as WebSocketSubject<any>;
fakeWebSocket$$.multiplex = function(x: any, y: any, filterFn: (z: any) => boolean) {
    // 此处this指向fakeWebSocket$$实例
    return this.pipe(filter(filterFn));
};

简化后的写法如下:

// simplified for readability
fakeWebSocket$$.multiplex = function(x, y, filterFn) {
    return this.pipe(filter(filterFn));
};

注意事项

如果你使用TypeScript开发,可以显式声明this的类型,避免类型校验报错:

fakeWebSocket$$.multiplex = function(this: WebSocketSubject<any>, x: any, y: any, filterFn: (z: any) => boolean) {
    return this.pipe(filter(filterFn));
};

只要你通过fakeWebSocket$$.multiplex()的形式调用该方法,this的指向就会完全符合预期,不需要额外手动绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:10