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:{...}
};
时间: 2024-11-12 09:22:27

javascript类定义小结的相关文章

JavaScript 类定义常用方法(转)

1.对象直接量 1 var obj1 = { 2 v1 : "", 3 get_v1 : function() { 4 return this.v1; 5 }, 6 set_v1 : function(v) { 7 this.v1 = v; 8 } 9 }; 2.定义函数对象 1 var Obj = function() { 2 var v1 = ""; 3 this.get_v1 = function() { 4 return this.v1; 5 }; 6 th

Javascript中定义类

Javascript 本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的 virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,并创建对象. 一:定义类并创建类的实例对象在Javascript中,我们用function来定义类,如下: function Shape(){var x = 1 ;var y = 2 ;} 你 或许会说,疑?这个

Javascript基础篇小结

Javascript基础篇小结 字数9973 阅读3975 评论7 喜欢28 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课时 入门基础 知识点: 操作系统就是个应用程序 只要是应用程序都要占用物理内存 浏览器本身也是一个应用程序 浏览器本身只懂得解析HTML 调用浏览器这个应用程序的一个功能绘制 1.javascript介绍 JavaScript操作DOM的本质是=获取+触发+改变 目的:就是用来操作内存中的DOM节点 修改D

js自定义类的小结

目前在Javascript中,已经存在一些标准的类,例如Date.Array.RegExp.String.Math.Number等等,这为我们编程提供了许多方便.但对于复杂的客户端程序而言,这些还远远不够. 与Java不同,Java2提供给我们的标准类很多,基本上满足了我们的编程需求,但是Javascript提供的标准类很少,许多编程需求需要我们自己去实现,例如Javascript没有哈西表Hashtable,这样的话在处理键值方面就很不方便. 因此,我个人认为一个完整的Javascript对象

Js 类定义的几种方式

提起面向对象我们就能想到类,对象,封装,继承,多态.在<javaScript高级程序设计>(人民邮电出版社,曹力.张欣译.英文名字是:Professional JavaScript for Web Developers)这本书中描述的还算比较详细.我们看看JavaScript中定义类的各种方法. 1.工厂方式 javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: <script type=&q

JavaScript类的设计

[转载] Javascript与其他的面向对象语言不同,如C++,Java或PHP等.它并不是基于类的,而是基于原型的一种语言. 1.对象创建 在Javascript中创建一个类是非常容易的: var myObject = { aVar: 15, aMethod: function() { alert("I'm a method of the object myObject." + "aVar: " + this.aVar); } } 你不必通过定义一个类然后实例化

Javascript类和模块(一)

原型对象是类的唯一标识:当且仅当两个对象继承自同一个原型对象时,它们才是属于同一个类的实例.而初始化对象的状态的构造函数则不能作为类的标识,两个构造函数的prototype属性可能指向同一个原型对象.那么这两个构造函数创建的实例是属于同一个类的. 一个典型的面向对象的js程序: functionRange(from,to){ this.from=from; this.to=to; } Range.prototype={ includes:function(x){ return this.from

ECMAScript 6 引入的 JavaScript 类(class)--类同java class

在 ECMAScript 6 引入的 JavaScript 类(class)是 JavaScript 现有的原型继承的语法糖. 类并不是 JavaScript 里加入的新的面向对象的继承模型.JavaScript 中的类只是能让我们用更简洁明了的语法创建对象及处理相关的继承. 定义类 类实际上是个"特殊的函数",而且正如函数的定义方式有函数声明和函数表达式两种一样,类的定义方式也有两种,分别是:类声明和类表达式. 类声明 类声明是定义类的一种方式,就像下面这样,使用 class 关键字

Javascript类和模块(二)

鸭式辩型:像鸭子一样走路,游泳并且呱呱叫的鸟就是鸭子.对于Javascript程序员来说,这句话可以理解为"如果一个对象可以像鸭子一样走路.游泳并且嘎嘎叫,就认为这个对象是鸭子,哪怕它并不是从鸭子类的原型对象继承而来的". toJSON()方法:这个方法是由JSON.stringify()自动调用的.JSON格式用于序列化良好的数据结构,而且可以处理Javascript原始值,数组和纯对象.它和类无关,当对一个对象执行序列化操作时,它会忽略对象的原型和构造函数. 使用闭包来封装的状态一