Backbone.js 如何检查该对象是否有事件?

Backbone.js 如何检查该对象是否有事件?,backbone.js,Backbone.js,我的例子是: var object = { msg: 'context obj' }; var object2 = { msg: 'other context obj2' }; _.extend(Object.prototype, Backbone.Events); object.on("alert:boom", function() { console.log("run " + this.msg); }, object2); object.on("all", funct

我的例子是:

var object = {
    msg: 'context obj'
};
var object2 = {
    msg: 'other context obj2'
};
_.extend(Object.prototype, Backbone.Events);
object.on("alert:boom", function() {
    console.log("run " + this.msg);
}, object2);
object.on("all", function(eventName) {
    console.log('all');
});
object.trigger("alert:boom");
object.trigger("alert:riri"); //Why  called ALL ????
如何检查该对象是否有事件?

我希望您能提供帮助。

使用JSON.stringify,查看它的内部

JSON.stringify(object)

all
是其中之一。
绑定到特殊**all**事件的回调将在任何事件发生时触发,并将事件名称作为第一个参数传递。

因此,如果您想知道任何事件何时发生,请执行以下操作:

Object.on('all', function(eventName) {
    console.log('event [' + eventName + '] triggered');
});

现在还不清楚您的问题是“如何检查该对象是否有事件?”还是“//为什么调用ALL?”——@AlexacderImra回答了最后一个问题

不建议您检查内部变量,但这不太可能发生变化-事件数组是
\u events
,因此您可以执行以下操作:

if (myObject._events['myeventname'])
检查特定事件,或:

if (myObject._events.length)
检查是否有任何事件

最好将该功能包装在一个函数中,以便在将来的主干版本中发生更改时,您只需在一个位置更新逻辑。

调用“All”,因为它是“针对任何触发事件触发的特殊事件”。有关更多信息,您可以查看主干文档: