(function(window){
ps = {},
ps = window.ps,
ps.subscriptions = [],
ps.subscribe = function(name, callback){
ps.subscriptions.push({"name": name, "callback": callback});
return [name,callback];
},
ps.unsubscribe = function(args){
for(x=0;x<ps.subscriptions.length;x++){
if(ps.subscriptions[x].name == args[0], ps.subscriptions[x].callback == args[1])
ps.subscriptions.splice(x, 1);
}
},
ps.publish = function(name, args){
var temp = [];
if(ps.subscriptions.length > 0){
for(var x=0;x<ps.subscriptions.length;x++) {
if(ps.subscriptions[x].name == name)
temp.push({"fn":ps.subscriptions[x].callback});
}
for(x=0;x<temp.length;x++){
temp[x].fn.apply(this,[args]);
}
}
};
console.log(window.ps);
console.log(ps);
})(window);
我的问题:
global
范围内声明,对吗?我问,因为这个假设推动了我的其他问题,我想确保我没有遗漏任何东西。ps = window.ps
,那么做ps
的重点是什么?是不是正在做的相当于ps = ps
?如果有人有更好的方法来描述这项技术并希望更新我的问题标题以便于查找,请随时这样做。
答案 0 :(得分:1)
这是糟糕的代码。更好的方法是:
(function(window){
var ps = window.ps || {},
ps.subscriptions = [],
// ...
window.ps = ps;
})(this);
为了更好的衡量,我会添加
"use strict"; // turn on "strict" mode
一开始也是。