揭示模块模式中的私有成员
Private members in the revealing module pattern
var app = (function(){
var foo = 'x';
var bar = function (){
...
};
var xx = function () {
bar();
}
return {
xx:xx
}
})();
由于该函数是立即调用的函数表达式 (IIFE),因此为应用程序变量分配了返回对象文字。但是私有成员以什么方式返回呢?成员 foo 是否不存在于应用程序中,因为它未在任何 public 方法中引用?对 bar 的引用如何存储在 app 变量中?
变量 foo 是私有的,因为它不能从 IIFE 外部访问,但可以从 xx、bar 和 IIFE 的其他部分访问,因为它在它们的范围内(或之上)。 app 变量将只知道对象 {xx: xx},仅此而已,因此 IFFE 就像一个黑盒子。 app 变量和相邻的变量知道从中得到什么,但它无法获得内部的任何值,例如的 foo.
var app = (function(){
var foo = 'x';
var bar = function (){
...
};
var xx = function () {
bar();
}
return {
xx:xx
}
})();
由于该函数是立即调用的函数表达式 (IIFE),因此为应用程序变量分配了返回对象文字。但是私有成员以什么方式返回呢?成员 foo 是否不存在于应用程序中,因为它未在任何 public 方法中引用?对 bar 的引用如何存储在 app 变量中?
变量 foo 是私有的,因为它不能从 IIFE 外部访问,但可以从 xx、bar 和 IIFE 的其他部分访问,因为它在它们的范围内(或之上)。 app 变量将只知道对象 {xx: xx},仅此而已,因此 IFFE 就像一个黑盒子。 app 变量和相邻的变量知道从中得到什么,但它无法获得内部的任何值,例如的 foo.