网上关于Javascript面向对象已经讲得很滥了,但是我发现,没有一篇文章提到如何实现私有静态变量。
很多文章甚至说:“很遗憾,不知道如何实现私有静态变量。”
不知道是不是我不够仔细?
不管了,自己动手,丰衣足食!
大家知道,私有实例变量的原理是根据作用域。
私有实例变量是在Javascript的function内部用var关键字实现,只在function内部有效。
仿照这个,提出私有静态变量的解决方案:
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();
注意不是直接定义Javascript类,而是用一个匿名的function作为静态变量的容器,并返回Javascript类。
更多信息请查看IT技术专栏