可以有简单的Javascript对象有事件吗? [英] Can plain Javascript objects have events?

查看:106
本文介绍了可以有简单的Javascript对象有事件吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可以使用简单的Javascript对象附加事件吗?说这样:

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

我知道我可以用jQuery做这个,但是没有任何图书馆可以吗?

解决方案

您必须实现自己的功能,但这不是很难。




如果(!(eventName在这里),则$ obj = {
event:{},
addEventListener:function(eventName,handler) .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 ](参数);
}
}
},

点击:function(){
//自定义点击功能。当这个被调用时,你会做任何你想要的点击。然后提高事件:

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


Can plain Javascript objects have event attached to them? Say something like this:

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

I know i can do this with jQuery, but is it possible without any library?

解决方案

You'll have to implement your own functionality for that, but that's not very hard.

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对象有事件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆