我有一个管理标签的课程:
function TabsManager() {}
执行某些操作(如添加或删除标签)时,会广播事件,例如active-tab-change
。我想尽可能明确地说明这个类支持哪些事件,所以我这样定义它们:
TabsManager.EVENTS = {
ACTIVE_TAB_CHANGE: "active-tab-change"
}
订阅标签管理器事件时,我可以像这样指定事件名称:
tabsManager.on("active-tab-change", function(){});
但是,这种方法容易出错,因为我可以拼错事件名称。所以我使用类似枚举的对象EVENTS
:
tabsManager.on(TabsManager.EVENTS.ACTIVE_TAB_CHANGE, function(){});
这里的问题是如果我使用dependency injection
我没有对象构造函数的直接引用,所以我使用了这种方法:
tabsManager.on(tabsManager.constructor.EVENTS.ACTIVE_TAB_CHANGE, function(){});
我以前从未见过这种方法,所以我很好奇这是否是一种可行的方法,是否已经在js框架/库中使用过?