独立的命名空间
1可以避免全局变量污染。
全局变量污染不是 说 被全局变量污染,而是说不会污染全局变量。
2实现私有成员。
在js中函数 就可以满足独立的命名空间的两点需求。
如:
function lib(){}
但是通常我们都是使用立即执行的匿名函数来实现 独立的命名空间。
通过向window注册一个变量来暴露命名空间。
立即执行的匿名函数
(function(){})();
我个人认为是因为,二者并没有差别,后者显的b格高点。
私有成员|静态成员
1 因为js中函数外部无法访问函数内部,所以函数内部就相当于一个私有作用域。定义在其中的方法和变量就是私有成员。
function fn() {
var a = 10;
function getA() {
alert(a);
}
return getA;
}
fn()();
2 函数本身也是对象,所以可以在上定义方法和变量,并且不是在函数的prototype属性中定义的方法和变量,所以无法被
函数的实例继承,这就是静态方法和变量。
function fn(){}
fn.getA = function(){}
fn.a = 10;