一、块级作用域
js中没有块级作用域的概念,可用匿名函数实现,由于匿名函数执行完一遍后,内部没有引用其变量对象的函数,其变量对象被清除,后面则引用不到其中的变量
(function(){
//块级作用域
})();
二、私有变量
只能函数内部访问,外界无法访问
在构造函数中定义特权方法,每次创建新对象时都会创建同样一组新方法。
function MyObject(){ //私有变量 var p=10; function pFunction(){ return 1; } //用来访问私有变量的特权方法 this.public=function(){ p++; return pFunction(); } }
三、静态私有变量
私有变量和函数又实例共享
(function(){ var p=10; function pFunction(){ return 1; } //构造函数 MyObject=function(){ }; //公有方法 MyObject.prototype.public=function(){ p++; return pFunction(); } })();
四、模块模式
为单例(只有一个实例的对象)创建私有变量和方法。
var singleton=function(){ var p=10; function pFunction(){ return 1; } return{ pubMethod:function(){ p++; return pFunction(); } } }();
五、模块加强模式
可以控制单例是什么类型对象
var singleton=function(){ var p=10; function pFunction(){ return 1; } var obj=new customer(); obj.pubMethod=function(){ ... } return obj; }();