显示模块模式中的私有成员

Private members in the revealing module pattern

本文关键字:成员 模块 模式 显示      更新时间:2023-09-26
var app = (function(){ 
    var foo = 'x';
    var bar = function (){
        ...
    };
    var xx = function () {
        bar();
    }
     return {
        xx:xx
     }
})();

由于该函数是立即调用的函数表达式 (IIFE(,因此会为应用程序 var 分配返回的对象文本。但是私人成员以什么方式返回?成员 foo 是否不存在,因为它未在任何公共方法中引用?对 bar 的引用如何存储在应用变量中?

变量 foo 是私有的,因为它不能从 IIFE 外部访问,但它可以从 xx、bar 和 IIFE 的其他部分访问,因为它在(或高于(其范围内。app 变量只会知道对象 {xx: xx},仅此而已,因此 IFFE 就像一个黑匣子。应用程序变量和相邻的变量知道从中得到什么,但它无法获得内部的任何值,例如 foo。