如何覆盖javascript方法并从类调用?

时间:2014-06-19 20:59:11

标签: javascript events triggers

原谅标题,但我不确定这叫什么(也许是事件?):

我创建了一个有人会使用的课程:

function cls_something()
{
    this.notify('hello');
}

现在使用我的类的人创建了一个名为'notify'的方法(按照我的指示),以便监听通知,然后使用我传递的参数执行他们自己的自定义代码:

var something = new cls_something();

something.notify = function(message)
{
    console.log('The notification is ' + message);   
}

如何在课堂内调用此方法给他通知消息?

Fiddle

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

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);
}

1 个答案:

答案 0 :(得分:0)

你可以直接调用this.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();

将通知通知。