网上关于javascript面向对象已经讲得很滥了,但是我发现,没有一篇文章提到如何实现私有静态变量。
很多文章甚至说:“很遗憾,不知道如何实现私有静态变量。”
不知道是不是我不够仔细?
不管了,自己动手,丰衣足食!
大家知道,私有实例变量的原理是根据作用域。
私有实例变量是在javascript的function内部用var关键字实现,只在function内部有效。
仿照这个,提出私有静态变量的解决方案:
<script language=javascript type=text/javascript>
var jsclass = (function() {
var privatestaticvariable = 私有静态变量;
var privatestaticmethod = function() {
alert(调用私有静态方法);
};
return function() {
this.test1 = function() {
return privatestaticvariable;
}
this.test2 = function(obj) {
privatestaticvariable = obj;
}
this.test3 = function() {
privatestaticmethod();
}
};
})();
var testobject1 = new jsclass();
var testobject2 = new jsclass();
alert(testobject1.test1());
testobject1.test2(改变的私有静态变量);
alert(testobject2.test1());
testobject2.test3();
</script>
注意不是直接定义javascript类,而是用一个匿名的function作为静态变量的容器,并返回javascript类。