网上可以找到各种各样的javascript定义类的方法:
我想整理出一个“简洁”的类定义模板,实现代码的模块化。
一、命名空间
//根命名空间 var Root; if(!Root) Root={}; ... //二级命名空间 if(!Root.SecondNS) Root.SecondNS={};
诸如此类。
二、类定义
通过定义类,实现代码的模块化 <script>
//#region 类:MyClass1(支持折叠:详情点击) var MyClass1=function(){ //public属性 this.publicProp1=1; //private属性 this.prv = {}; this.prv.prop1 = 2; //方法、静态属性初始化 if (typeof MyClass1._initialized == "undefined") { //public的方法 MyClass1.prototype.publicOp1=function(){ this.prv.prop1 += 5; this.publicProp1 += 6; console.log("privateProp1=" + this.prv.prop1+",publicProp1="+this.publicProp1); } //private的方法 MyClass1.prototype.prv = {}; MyClass1.prototype.prv.op1=function(){ } //static的属性(通过类名访问) MyClass1.staticProp1="staticProp1"; MyClass1._initialized = true; } } //#endregion 类:MyClass1 //测试 var x = new MyClass1(); x.publicOp1(); var y = new MyClass1(); y.publicOp1();
console.log("MyClass1.staticProp1=" + MyClass1.staticProp1); MyClass1.staticProp1="newvalue" console.log("MyClass1.staticProp1=" + MyClass1.staticProp1); </script>
三、继承
不考虑
四、模块的层次化
通过命名空间与类的结合,实现程序模块的层次化。
//根命名空间 Root={ Root属性1:属性值, Root方法1:function(){...}, 类1:function(){类1的定义), 类2:new function(){类2的定义),//单例 //二级命名空间 SecondNs:{...} };
时间: 2024-11-12 09:22:27