码迷,mamicode.com
首页 > 编程语言 > 详细

javascript类定义小结

时间:2015-03-10 00:01:13      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:

网上可以找到各种各样的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:{...}
};

 

javascript类定义小结

标签:

原文地址:http://www.cnblogs.com/erentec/p/4324403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!