是否有子类/继承/扩展javascript WebSocket的方法



我到处都找过了,似乎没有任何问题,更不用说答案了。

我已经尝试了多种方法,使用原型继承似乎是最好的方法

function MyWebSocket(url) {
  // do other stuff
  WebSocket.call(this, url);
}
MyWebSocket.prototype = Object.create(WebSocket.prototype);
MyWebSocket.prototype.constructor = MyWebSocket;
MyWebSocket.prototype.test = function () { alert('hi'); };

我可以单独分配测试函数很好,但在试图覆盖构造函数时,我得到错误"TypeError:未能构建'WebSocket':请使用'new'操作符,此DOM对象构造函数不能作为函数调用"从chrome。

我明白这不是你典型的javascript函数/对象,但我真的想要一种方法来覆盖WebSocket构造函数,以设置其他维护功能,如ping间隔,是的,我可以在onopen函数中单独做到这一点,但这是我想要的东西,只是对网站上打开的所有WebSocket全局。

谢谢大家!

你可以这样做:

function MyWebSocket(url) {
     this.ws = new WebSocket(url);
}
MyWebSocket.prototype.test = (function() { 
   // this = MyWebSocket.ws, i.e. a plain WebSocket obj
}).bind(MyWebSocket.ws);
var myWS = new MyWebSocket(url);
myWS.test(); // does something to the underlying websocket

或者,要对底层websocket做一些事情,您不能使用bind,而只是在定义MyWebSocket.prototype上的函数时参考this.ws

相关内容

  • 没有找到相关文章

最新更新