模块模式——方法

var prison = (function(){
  var prisoner_name = 'WangMing',
      jail_term = '20 year term';

  // 返回一个有两个方法的对象
  return {
    // 每次调用prisoner()时,会重新查找prisoner_name和jail_term
    prisoner: function () {
      return prisoner_name + '-' + jail_term;
    },
    // 每次调用setJailTerm时,会查找并设置jail_term
    setJailTerm: function ( term ) {
      jail_term = term;
    }
  };
})();

// this outputs 'WangMing-20 year term'
console.log( prison.prisoner() );
prison.setJailTerm( 'Sentence commuted' );
// this now outputs 'WangMing-Sentence commuted'
console.log( prison.prisoner() );


/*
  尽管自执行匿名函数完成了执行,方法prisoner和setJailTerm仍然可以访问变量变量prisoner_name和jail_term。prisoner_name和jail_term像是prison对象的私有变量。它们只能通过匿名函数返回的对象上的方法来访问,不能在该对象或者原型上直接访问。


*/
原文地址:https://www.cnblogs.com/nodejsxxh/p/4423679.html