понеділок, 1 березня 2010 р.

Сигналы на JavaScript

Этот код я создал под впечетлением QScriptEngine. В дальнейшем заметил что начал его слишком часто использовать. Собственно вот:



function signalize(val){
var events={};
val.connect=function(name,func){
if(func.constructor!=Function)return;
if(!events[name])events[name]=[];
events[name].push(func);
}
val.disconnect=function(name,func){
var list=[];
for(var i in events[name])
if(events[name][i]!=func)
list.push(events[name][i]);
events[name]=list;
}
val.emit=function(){
var name=arguments[0];
var rest=Array.prototype.slice.call(arguments, 1);
for(var i in events[name])
events[name][i].apply(val,rest);
}
return val;
}


Жду замечаний и предложений.

Немає коментарів:

Дописати коментар