js实现私有变量

时间:2021-08-30 03:43:29

一、块级作用域

  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;
}();