我有几个模块做自己的事情,但需要他们有时访问彼此的属性(不是交织在一起,只有一个json obj)。像这样
var Bananas = (function() {
// Bananas.properties would look like this
// Bananas.properties = { 'color' : 'yellow' };
var methodToGetProperties = function() {
API.get('bananas')
.done(function(data) {
Bananas.properties = data;
}
};
var publiclyReturnProperties = function() {
if (!Bananas.properties) {
methodToGetProperties();
} else {
return Bananas.properties;
}
};
var doSomethingBananas = function() {
bananas.doing.something;
bananaHolder.innerHTML = Bananas.properties;
}
var init = function() {
doSomethingBananas
}
return {
init: init,
properties: publiclyReturnProperties,
};
})();
var Apples = (function() {
var doSomethingApples = function() {
apple.innerHTML = Bananas.properties.color;
};
var init = function() {
doSomethingApples();
};
return {
init: init
};
})();
Bananas.init(); Apples.init();
现在,我现在的方法是简单地显示methodToGetProperties,它返回API调用,然后在我调用它的地方使用jQueries延迟方法。但我觉得这会破坏我的代码,到处都是.done。
我一直在阅读单身模式,觉得这可能是我问题的解决方案,但我不确定如何实现它。或者也许在methodToGetProperties中实现回调函数,但对于如何实现无法自信。
非常感谢有关如何整理我的应用的建议。