如何重写javascript方法和类调用?

如何重写javascript方法和类调用?,javascript,events,triggers,Javascript,Events,Triggers,请原谅标题,但我不太确定这叫什么(可能是事件?): 我创建了一个类,有人将使用它: function cls_something() { this.notify('hello'); } 现在,使用我的类的人创建了一个名为“notify”的方法(按照我的指示),以便侦听通知,然后使用参数I pass执行他们自己的自定义代码: var something = new cls_something(); something.notify = function(message) { c

请原谅标题,但我不太确定这叫什么(可能是事件?):

我创建了一个类,有人将使用它:

function cls_something()
{
    this.notify('hello');
}
现在,使用我的类的人创建了一个名为“notify”的方法(按照我的指示),以便侦听通知,然后使用参数I pass执行他们自己的自定义代码:

var something = new cls_something();

something.notify = function(message)
{
    console.log('The notification is ' + message);   
}
我如何从类中调用此方法以向他提供通知消息

我正在努力实现这样的目标

websocket = new WebSocket("ws://localhost:10000"); 

websocket.onopen = function(e)
{
    console.log('you are connected');
}

websocket.onmessage = function(e)
{
    console.log('omg wtf ffs, there was an error: ' + e.msg);
}

你可以直接调用这个。notify(“Message”);不过,您可能需要先检查是否定义了它

编辑1:

这里的问题是,在定义函数之前,直接从构造函数调用函数。如果需要在构造函数中定义,则将函数作为参数传递

function cls_something(notifyFunction)
{
    notifyFunction('hello');
}
编辑2:

我们很清楚,如果您愿意,您可以让类的用户稍后定义函数。显然,您不能直接从构造函数运行它们。如果您从构造函数运行它们,则需要先定义它们

比如说你的课有点像

function cls_something()
{
    this.someFunctionThatIsRunLater = function() {
        this.notify('hello');
    }
}
然后你的客户就可以写了

var something = new cls_something();

something.notify = function(message)
{
    console.log('The notification is ' + message);   
}
然后,当客户端调用

something.someFunctionThatIsRunLater();

通知将被调用

本通知(“布拉格”);使用this.notify('hello');给出未捕获的TypeError:undefined不是函数您是否编写了WebSocket类?如果是这样,那么当套接字打开时,您需要从该类中调用websocket.onopen()。如果直接从构造函数打开websocket,则必须将其作为参数传入。这是使用浏览器中内置的标准websocket。它会在您创建对象时立即连接,但您的方法会在连接代码之后出现。我假设实际的代码有某种延迟来读取这些。谢谢你的帮助。你基本上回答了我的问题。我添加的方法在构造函数中不可用。将在自定义方法之后添加init()或connect()函数。使用this.notify('hello');给出了未捕获的TypeError:undefined不是一个函数,这就是为什么我说“你可能想先检查一下它是否被定义了”。如果类的用户没有定义某物。notify(就像你说的那样),那么它就不会被定义。你能用notify函数实际调用的位置更新原始问题吗?@letslogic.com编辑你的小提琴并更新答案如果有+/-50个函数会发生什么?