javascript公共变量

来源:互联网 发布:linux保存文件并退出 编辑:程序博客网 时间:2024/05/17 06:31

javascript函数的实例间共享同一个变量(比如用来记录实例化次数)

有两种方法:

方法一:使用原型链来存储这个共有变量,且共有变量的类型是数组(必须为数组)

function A(){}
A.prototype.count=[0];
var a1=new A();
var a2=new A();
a1.count[0]=90;
console.log(a1.count);console.log(a2.count);

打印结果:
[ 90 ]
[ 90 ]

-这说明a1和a2这两个实例是共享count这个变量的。但是有点必须说明,a1.count和a2.count并不是同一个变量,他们是指向同一块内存的两个变量。
-关于数组的这个特性可以认为是javascript中的数组类似于C++中的链表,例如var d=[2,4];那么var c=d的时候c和d指向的是同一块内存区域,并没有为c重新开辟一块新的内存。


方法二:使用闭包实现

//闭包实现实例间共享变量
var A=(function(){
var count=0;
function A() {
this.getcount = function () {
return count;
}
this.setcount = function (value) {
count = value;
}
}
return A;
})();
var a1=new A;var a2=new A;
console.log(a1.getcount());
console.log(a2.getcount());

打印结果如下:
23
23

-上面结果可以看到实例a1和a2的都可以对同一个变量进行操作,符合共有变量的要求,只是所有对count的操作都必须通过函数来进行,不能直接对count操作,这也正是闭包的原理,外界可以访问到某个作用域内的变量,但是这是间接的。

0 0