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