<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>函数--更深入的窥探</title>
    <script type="text/javascript">
      window.onload = function () {
        //函数和匿名函数
        var prison = function() {
          console.log('prison called!');
        }
        prison()
        
        /*************************************/
        
        //自动执行匿名函数
        (function() {
          console.log('private');//输出 private
        })();
        
        
        
        //匿名函数传参
        (function(what_to_eat) {
          var sentence = 'I am going to eat a ' + what_to_eat;
          console.log(sentence);
        })('sandwich');
        
        
        
        
        /*
          模块模式
         * */
        
        var prison = (function () {
          var prisoner_name = 'Mike';
          var jail_term = '20 year term';
          
          return {
            prisoner : prisoner_name + '-' + jail_term,
            sentence : jail_term
          };
        })();
        console.log(prison.prisoner_name);//undefined
        console.log(prison.prisoner)//Mike-20 year term
        console.log(prison.sentence);//20 year term
        //上面代码中prison.prisoner和prison.sentence的值是不能更改的
        
        
        //修改后的代码
        var prison = (function () {
          var prisoner_name = 'Mike';
          var jail_term = '20 year term';
        
          return {
            prisoner : function(){
              return prisoner_name + '-' + jail_term;
            },
            sentence : function() {
              return jail_term;
            }
          };
        })();
        //通过匿名函数返回的对象上的方法来访问,不能通过该对象或者原型上直接访问
        console.log(prison.prisoner())//Mike-20 year term
        console.log(prison.sentence())//20 year term
        
        //期待下一讲“闭包”
      }
    </script>
  </head>
  <body>
  </body>
</html>