【发布时间】:2016-11-30 20:55:15
【问题描述】:
这是代码:
var Event=(function(){
var clientList={},listen,trigger,remove;
listen=function(key,fn){
/*some code*/
};
trigger:function(){
var key=Array.prototype.shift.call(arguments);
fns=clientList[key];
if(!fns||fns.length==0){
return false;
}
for(var i=0,fn;fn=fns[i++];){
fn.apply(this,arguments);
}
};
remove:function(key,fn){
var fns=clientList[key];
if(!fns){
return false;
}
if(!fn){
fns&&(fns.length=0)
}else{
for(var l=fns.length-1;l>=0;l--){
var _fn=fns[l];
if(_fn===fn){
fns.splice(1,1);
}
}
}
};
/*some code*/
})();
我不明白为什么用var key=Array.prototype.shift.call(arguments); 而不是传递参数和fns&&(fns.length=0) 而不是fns.length=0?如果您能回答我的问题,我将不胜感激。
【问题讨论】:
-
你可以在这里查看更多...stackoverflow.com/questions/3358622/…
标签: observer-pattern