JavaScript

超轻量级php框架startmvc

JS块级作用域和私有变量实例分析

更新时间:2020-08-25 20:54:01 作者:startmvc
本文实例讲述了JS块级作用域和私有变量。分享给大家供大家参考,具体如下:块级作用域(

本文实例讲述了JS块级作用域和私有变量。分享给大家供大家参考,具体如下:

块级作用域


(function(){
 //这里是块级作用域
})()

例如:


(function(){
 for(var i=0;i<5;i++){
 alert(i);//0,1,2,3,4
 }
})();
alert(i);//error

上例中,定义了一个块级作用域,变量i在块级作用域中可见的,但是在块级作用域外部则无法访问。

这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。

私有变量

任何在函数中定义的变量,都可以认为是私有变量。因为不能在函数的外部访问这些变量。私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。

我们把有权访问私有变量和私有函数的公有方法称为特权方法:


function MyObject(){
//私有变量和私有函数
 var privateVariable = 10;
 function privateFunction(){
 return false;
 }
 //特权方法,特权方法作为闭包有权访问在构造函数中定义的所有变量和函数
 this.publicMethod = function (){
 privateVariable++;
 return privateFunction();
 };
}
var obj = new MyObject();
obj.publicMethod();//

原型模式定义共有方法:


(function(){
 //私有变量和私有函数
 var privateVariable = 10;
 function privateFunction(){
 return false;
 }
 //构造函数
 MyObject = function(){
 };
 //公有/特权方法
 MyObject.prototype.publicMethod = function(){
 privateVariable++;
 return privateFunction();
 };
})();

模块模式:


var singleton = function(){
//私有变量和私有函数
 var privateVariable = 10;
 function privateFunction(){
 return false;
 }
 //特权/公有方法和属性
 return {
 publicProperty: true,
 publicMethod : function(){
 privateVariable++;
 return privateFunction();
 }
 };
}();