Page 19 - JavaScript修炼之道
P. 19

任务2  通过模块模式实现代码访问控制                  5


                   在匿名函数中使用var关键字

                    (function () {
                     var privateField = 42;

                     function innerFunc() {
                       notSoPrivate = 43;
                      return notSoPrivate;
                    }

                    alert(privateField); // => 42
                    innerFunc();
                    alert(notSoPrivate); // => 43
                   })();
                   alert(typeof privateField); // => Undefined
                   alert(notSoPrivate); // => 43 (变量被泄露到外部)

                   试试这个例子:“私有属性”

                   var obj = (function() {
                     var privateField = 42;
                     var publicField = 'foobar';

                     function processInternals() {  alert('Internal stuff : ' + privateField);}

                     function run() {
                      processInternals();
                      alert(‘Still private stuff: ’ + privateField);
                      alert(‘Public stuff: ’ + publicField);
                    }

                     return {
                      publicField: publicField,
                       run : run
                    };
                   })();

                   obj.run() // 弹出三个对话框:Internal, still private, public
                   obj.publicField // foobar
                   obj.processInternals() // Undefined
                   obj.privateField // Undefined
   14   15   16   17   18   19   20   21   22   23   24