是否可以将事件处理程序添加到 JavaScript 函数/类中
Is it possible to add event handlers to JavaScript functions/classes?
我正在尝试在JavaScript函数/类上注册事件,并试图使其尽可能接近下面的C#类。这有可能吗?
C#
public class MyClass
{
public event EventHandler evtMyEvent;
private void RaiseEvent()
{
if(evtMyEvent != null)
evtMyEvent(this, new EventArgs());
}
}
MyClass mc = new MyClass();
mc.evtMyEvent += (s,e) => { //Do Something };
.JS
function MyClass()
{
// Add an event handler...
this.raiseEvent = function(){
// raise the event
}
}
var mc = new MyClass();
//register for the event
这是完全可能的,您可以研究处理事件的众多库之一来检查它们的实现。
这是一个非常简单的草稿,不处理不侦听、事件类型、参数、范围、冒泡等:
function EventHandler(target) {
var listeners = [];
this.add = function(handler) {
listeners.push(handler);
};
this.fire = function() {
for (var i=0; i<listeners.length; i++) {
listeners[i].call(target);
}
};
}
function MyClass()
{
this.name = 'myclass';
// Add a private event handler...
var eventHandler = new EventHandler(this);
this.listen = function(f) {
eventHandler.add(f);
};
this.raiseEvent = function(){
eventHandler.fire();
};
}
var mc = new MyClass();
mc.listen(function(){ console.log(this.name); });
mc.raiseEvent();
演示:http://jsbin.com/UCAseDi/1/edit
显然,对这个草案的修改很容易。如果您对其中任何一个有疑问,请告诉我,我会尽力帮助您。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别