我设置了两个封闭作用域,其中一个作用域依赖于另一个作用域。通常,我会通过将数据公开到全局范围来共享数据(在本例中是具有原型(prototype)的函数),如下所示:
(function(){
var thing;
/* ... */
window.thing = thing;
}());
和:
(function(){
/* I now have access to 'thing' */
}());
是否有一种模式可以共享数据而不将其暴露给整个窗口?
最佳答案
这只能通过使两个闭包本身成为另一个闭包的子作用域,并使共享数据成为父闭包中的局部变量来完成:
(function() {
var thing = 'foo';
(function f1() {
// thing is accessible here
...
})();
(function f2() {
// and here!
...
})();
})();
注意:闭包是一个词法结构,这意味着两个函数必须都在同一个源单元内。
关于javascript - 如何在两个闭包之间共享数据而不暴露于全局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24381425/