var office = {
fnlist:{},
listen: function(key,fn){
if(!this.fnlist[key]){
this.fnlist[key] = []
}
this.fnlist[key].push(fn)
},
trigger: function(){
var key = Array.prototype.shift.call(arguments),
fnArr = this.fnlist[key];
if(!fnArr || fnArr.length===0){
return false
}
for(var i =0,fn;fn=fnArr[i++];){
fn.apply(this,arguments)
}
}
}
运用
office.listen('a',function(data){console.log(data)})
office.trigger('a',"我就是数据")
//输出 我就是数据
宣布定阅形式的通用完成
修改下之前的代码
var event= {
fnlist:{},
listen: function(key,fn){
if(!this.fnlist[key]){
this.fnlist[key] = []
}
this.fnlist[key].push(fn)
},
trigger: function(){
var key = Array.prototype.shift.call(arguments),
fnArr = this.fnlist[key];
if(!fnArr || fnArr.length===0){
return false
}
for(var i =0,fn;fn=fnArr[i++];){
fn.apply(this,arguments)
}
}
}
js是一门诠释之行的言语,给对象动态欠佳职责是很简单的事变
我们须要一个installEvent要领
var installEvent = function(obj){
for(var i in event){
obj[i] = event[i]
}
}
须要让一个对象 有 宣布定阅功用
只须要
var a = {}
installEvent(a);
// a 对象就有了结果