看下面的一個例子:
function doSomething(a) {b = a + doSomethingElse( a * 2 );console.log( b * 3 );
}function doSomethingElse(a) {return a - 1;
}var b;doSomething( 2 ) ; // 15
上述代碼中的doSomethingElse實際上應該是doSomething的"私有"部分,根據最小暴露原則,應該將doSomethingElse放到doSomething的作用域內,避免其他的操作修改了doSomethingElse.代碼如下:
function doSomething(a){function doSomethingElse(a){return a - 1;}b = a + doSomethingElse(a);console.log(b * 3);
}
doSomething( 2 ); // 15// 注:這樣就只將必須的部分暴露給全局作用域.
// 更進一步:如果有多個屬性和方法,將其全部掛在一個(獨特)名字上面:
function MyPrivilegeScope() {attr1: '1',attr2: '2',...method1:function(){//...},method2:function(){//...},...
}
// 很像模塊化編程..
參考《你不知道的JavaScript》(上卷) P24