javascript - 普通 Javascript 对象可以有事件吗?

标签 javascript object events

普通 Javascript 对象可以附加事件吗?像这样说:

obj = new Object();
obj.addEventListener('doSomething', foo, true);

我知道我可以用 jQuery 做到这一点,但是没有任何库是否可行?

最佳答案

您必须为此实现自己的功能,但这并不难。

var obj = {
    events: {},
    addEventListener: function(eventName, handler) {
        if(!(eventName in this.events))
            this.events[eventName] = [];

        this.events[eventName].push(handler);
    },

    raiseEvent: function(eventName, args) {
        var currentEvents = this.events[eventName];
        if(!currentEvents) return;

        for(var i = 0; i < currentEvents.length; i++) {
           if(typeof currentEvents[i] == 'function') {
              currentEvents[i](args);
           }
        }
    },

    click: function() {
        // custom 'click' function. when this is called, you do whatever you
        // want 'click' to do. and then raise the event:

        this.raiseEvent('onClick');
    }
};

关于javascript - 普通 Javascript 对象可以有事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086956/

相关文章:

Javascript 阻止匿名函数?

javascript - indexOf 但对于对象呢?

javascript - Jquery - Fullcalendar (v1.6.4) - 一些事件不显示结束日期

android - FrameLayout 上的触摸事件

javascript - 如何在 JSX 中打印 props 对象,我收到 TypeError : Cannot read property of undefined

javascript - 删除某些 div 元素的父级 href 属性

javascript - 扩展 Parse.User

object - C# 在 get 访问器中初始化对象

javascript - 对象的属性显示为未定义

javascript - 在 html "onclick"事件中组合许多类似的操作