-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunctionManage.js
More file actions
61 lines (60 loc) · 1.18 KB
/
functionManage.js
File metadata and controls
61 lines (60 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
var funcContainer = {};
(function(e) {
var topics = {}; // 回调函数存放的数组
//绑定方法
e.bind = function(topic, func) {
if(!topics[topic]) {
topics[topic] = [];
}
var token = topic;
topics[topic].push({
token: token,
func: func
});
return token;
};
// 触发方法
e.trigger = function(topic, args) {
if(!topics[topic]) {
return false;
}
setTimeout(function() {
var listener = topics[topic],
len = listener ? listener.length : 0;
while(len--) {
listener[len].func(topic, args);
}
}, 0);
return true;
};
e.triggerAll = function(args) {
for(var topic in topics) {
funcContainer.trigger(topic, args);
}
};
//移除方法
e.removeOne = function(token) {
for(var m in topics) {
if(topics[m]) {
for(var i = 0, j = topics[m].length; i < j; i++) {
if(topics[m][i].token === token) {
topics[m].splice(i, 1);
return token;
}
}
}
}
return false;
};
e.remove = function(token) {
while(true) {
var sign = funcContainer.removeOne(token);
if(!sign) break;
}
};
e.removeAll = function() {
for(var top in topics) {
topics[top].splice(0, topics[top].length);
}
};
}(funcContainer));