看下面的一个例子:
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