看到这样一段代码(节选)
这里是定义部分
export interface BaseWebSocket {
onopen: ((this: WebSocket, ev: Event) => any) | null;
}
class MyWebSocket implements BaseWebSocket {
webSocket?: WebSocket;
onopen: ((this: WebSocket, ev: Event) => any) | null = null;
connect(url: string): void {
this.webSocket = new WebSocket(url);
this.webSocket.onopen = this.onopen;
}
}
然后,再下面某个函数里面,再创建该 class 的实例,并调用给这个实例的 onopen 添加实现的时候,只有一个“参数”。
(blabla...)
const webSocket = webSocketIn ? webSocketIn : new MyWebSocket();
webSocket.onopen = _event => {
// 具体的实现代码,这里,这个 arrow function 只有一个参数
// 但是,onopen 的接口定义,是两个参数
// 第一个参数,this: WebSocket 为什么可以忽略?还是......
}
(blabla...)
webSocket.connect("url here...")
google 了一下,没有找到答案,估计是我搜索关键字不对......
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.