/**
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
};
})();