javascript - 有没有办法子类化/继承/扩展 javascript WebSocket?

标签 javascript inheritance websocket

我到处都看了,似乎没有任何问题,更不用说关于这个的答案了。

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

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 上定义函数时仅引用 this.ws .原型(prototype)

关于javascript - 有没有办法子类化/继承/扩展 javascript WebSocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123841/

相关文章:

javascript - 仅使用 javascript 且不使用 jquery 的 highcharts

c++ - 我们可以覆盖继承类的纯虚函数吗?

c# - 用派生类覆盖基类的属性

c# - 在 .net 核心控制台应用程序中创建一个 websocket 服务器

php - 使用 SSL 创建 PHP WebSocket

javascript - 函数是真值?

php - 在按钮上单击重复的 HTML 代码

c# - ASP.NET MVC 4.5 WebSocket 服务器在传输几条消息后失去连接

javascript - XMLHttpRequest 请求的资源上不存在 'Access-Control-Allow-Origin' header

c++ - 继承:为什么继承的变量和提供的变量之间存在行为差异?