javascript类定义小结

网上可以找到各种各样的javascript定义类的方法:

1.ECMAScript 定义类或对象

2.Javascript定义类(class)的三种方法

 

我想整理出一个“简洁”的类定义模板,实现代码的模块化。

 

一、命名空间

//根命名空间
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:{...}
};

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。