假设我有以下模块,分成多个文件,都能够扩展 skillet
:
文件1.js:
(function(){
var privateVar1 = 0;
var privateFunction1 = function() {
//function definiton
};
skillet.fry() = function() {
//fry it
//matchbox.light();
};
})(window.skillet = window.skillet || {});
文件2.js:
(function(){
var privateVar2 = 0;
var privateFunction2 = function() {
//some private function
};
skillet.grillIt = function() {
//grill It
//matchbox.strike(); <-- Shared with File1.js
};
})(window.skillet = window.skillet || {});
是否可以有一个共享变量/对象,比如matchbox
两个模块可以共享而不绑定到window.matchbox
or window.skillet.matchbox
?即应仅对 File1.js 和 File2.js可见,matchbox
并且不得在其他地方访问。我怀疑这是否可能,但有没有办法在 JavaScript 中实现这种行为?如果不是,在这方面使用的最佳做法是什么?
(这更像是在一组相关模块之间拥有一个共享的事件总线,而不是全局公开该总线)