[Javascript] Private, public variables and method in Name Space

复制代码
/**
    So far, we've seen a module that has only public properties
*/
/*The thing with a namespace is that you have to hope that no one
else ever uses its name.*/
var ARMORY = {

    weaponList: [*list of weapon objects*],
    armorList: [*list of armor objects*],
    
    //This namespace has a bunch of public 
    //variables and methods which can still
    //be accessed by any code that knows 
    //the name of space and its properties.
    makeWeaponRequest: function(){},
    makeArmorRequest: function(){},
    
    removeWeapone: function(){},
    replaceWeapon: function(){},
    removeArmor: function(){},
    replaceArmor: function(){},    
}

/**
 What if we wanted some stuff to be accessible only to the module?
*/
/*First, we need to decide which properties should be public and 
which should be private*/
var ARMORY = {

    weaponList: [*list of weapon objects*], //private
    armorList: [*list of armor objects*],  //private
    
    makeWeaponRequest: function(){},  //public
    makeArmorRequest: function(){},   //public
    
    removeWeapone: function(){},  //private
    replaceWeapon: function(){},  //private
    removeArmor: function(){},    //private
    replaceArmor: function(){},      //private
} 


/**
    Javascript's closure feature will allow us to "privatize" properties
*/
/*As a first visual step, we'll wrap the entire of properties in
an annonymous immediately invoked function expression*/
var ARMORY = (function(){{

    weaponList = [*list of weapon objects*]; //private
    armorList = [*list of armor objects*];  //private
    
    makeWeaponRequest = function(){};  //public
    makeArmorRequest = function(){};  //public
    
    removeWeapone = function(){};  //private
    replaceWeapon = function(){};  //private
    removeArmor = function(){};    //private
    replaceArmor = function(){};      //private
})();


/**
    Now we will make desired private properties into local executable code
*/
/*Those local values and methods will eventually be "closed up" 
into the armory's namespace.*/
var ARMORY = (function(){{
    //add var to the private properties
    var weaponList = [*list of weapon objects*]; //private
    var armorList = [*list of armor objects*];  //private
    
    var removeWeapone = function(){};  //private
    var replaceWeapon = function(){};  //private
    var removeArmor = function(){};    //private
    var replaceArmor = function(){};   //private    
    
    makeWeaponRequest = function(){};  //public
    makeArmorRequest = function(){};  //public
})();

/**
    To make some properties public, return an object
*/
var ARMORY = (function(){{
    //add var to the private properties
    var weaponList = [*list of weapon objects*]; //private
    var armorList = [*list of armor objects*];  //private
    
    var removeWeapone = function(){};  //private
    var replaceWeapon = function(){};  //private
    var removeArmor = function(){};    //private
    var replaceArmor = function(){};   //private    

    return{
        makeWeaponRequest = function(){};  //public
        makeArmorRequest = function(){};  //public    
    };    
})();
复制代码

 

posted @   Zhentiw  阅读(185)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示