A-A+
	javascript闭包模拟静态私有变量,和常量实现程序
本文章介绍了关于JS 闭包模拟静态私有变量,和常量有需要了解的同学可以参考一下下,啥也不多说了,直接上代码,看原作者注释去吧,嗯。。
- //静态私有变量
 - var MyNamespace = {}; // 定义命名空间
 - MyNamespace.TreeItem = (function() {
 - //使用闭包产生的私有静态变量,不可被外部访问
 - var numTreeItems = 0;
 - //使用闭包产生的私有静态方法,不可被外部访问
 - function counter() {
 - numTreeItems ++;
 - console.log("Created "+numTreeItems+" tree items!");
 - }
 - //该匿名函数的引用将被赋予MyNamespace.TreeItem
 - return function() {
 - //使用闭包产生的私有类变量,不可被外部访问
 - var label;
 - //可访问私有变量,也可被外部访问的方法
 - this.setLabel = function( newLabel ) {
 - label = newLabel;
 - };
 - this.getLabel = function() {
 - return label;
 - };
 - //该方法用来累计实例的数量
 - counter();
 - }
 - })(); //在函数定义的末尾加上括号,表示该函数在定义后立即执行
 - //不可访问私有变量以及其它公共方法的静态公共方法
 - MyNamespace.TreeItem.clone = function(otherInstance) {
 - };
 - MyNamespace.TreeItem.prototype = {
 - // 不可访问私有变量,但可访问其它公共方法的公共方法
 - print: function() {
 - console.log(this.getLabel());
 - }
 - };
 - var treeItem1 = new MyNamespace.TreeItem(); // print 1
 - var treeItem2 = new MyNamespace.TreeItem(); // print 2
 - //模拟常量
 - // 这个Constant类用来保存应用中的所有final静态常量
 - var Constant = (function() {
 - //不可被外部访问的闭包私有静态变量
 - var constants = {
 - VERSION: 7.5
 - };
 - //构造函数
 - var constructor = function() {
 - };
 - //可被外部访问,也可访问闭包内私有静态变量的方法
 - constructor.getConstants = function(name) {
 - return constants[name];
 - };
 - return constructor;
 - })();
 - //访问Constant闭包中的静态常量
 - Constant.getConstants('VERSION'); // return 7.5
 
每创建一个新的TreeItem实例,内存会为其私有变量,私有方法和所有能够访问私有变量和私有方法的方法开辟物理空间,而prototype中的方法始却始终只有一个.