Javascript 检查对象是否是JS中的事件

Javascript 检查对象是否是JS中的事件,javascript,javascript-events,Javascript,Javascript Events,我有一个函数,可以显式调用,也可以在事件触发时调用。如果它是由事件触发的,我需要忽略一个函数参数,否则它可能有一个有用的值 是否有可靠的跨浏览器方式可以检查对象是否为事件 我们一直在使用它,但意识到它在IE7中不起作用,因为Event未定义: var view = { save: function (data) { if (data.constructor === Event.constructor) { // It's an event.

我有一个函数,可以显式调用,也可以在事件触发时调用。如果它是由事件触发的,我需要忽略一个函数参数,否则它可能有一个有用的值

是否有可靠的跨浏览器方式可以检查对象是否为事件

我们一直在使用它,但意识到它在IE7中不起作用,因为
Event
未定义:

var view = {
    save: function (data) {
        if (data.constructor === Event.constructor) {
            // It's an event.
        }
    }
};
我认为“穷人”的方法是检查所有
Event
对象是否存在某种方法,而不管它们是如何创建的:

if (!(typeof data.altKey == "undefined")) {
  // it's an Event
}
编辑


由于某些版本的IE不接受preventDefault,因此我已将解决方案更改为使用不同的属性,实际上任何公共属性都可以正常工作

preventDefault
在早期版本的IE中未定义,如果您支持这些版本的IE,则您支持的是不受支持的软件。IE6+支持
preventDefault
(微软甚至不再支持它)。抱歉,但是-1有点苛刻。IE9是支持
preventDefault
的最早版本。很公平,我不好,但是相同的想法适用于不同的属性。将更新。只要OP在非事件中没有定义相同的属性,它就应该可以。