javascript定义类

作者:sagahu

javascript中类是通过function实现的,类的对象是通过new那个function来获得。这里面包含一些细节值得探讨。

一、声明并创建单实例对象

首先需要注意的是,对于单实例对象不是通过function来实现,而是通过枚举来实现的。举个例子如下:

代码(可以建个空HTML文件,把这段代码粘帖到脚本的<Script>标签对里来测试):

var obj1 = { Name : "zhangsan", Age : 28, SayHello : function() { alert("Hello "+this.Name); } }; obj1.SayHello();

二、类的构造函数


  • function Human() {} 或者:
  • var Human = function() {}

接下类声明一个包含属性与方法的Human类,代码如下:

function Human(name, age) {
        this.name = name;   // 成员属性如此定义
        this.age = age;
        
        // 第一种声明方法的办法:在类的内部直接声明
        this.methodA = function() { 
            alert("Hello " + this.name);
        }
    }
    
    // 第二种声明方法的办法:在类的外部通过“类.prototype.方法名 = function(){}”来定义
    Human.prototype.methodB = function() { alert("Hello " + this.name); }
    
    var obj1 = new Human("张三", 18);
    obj1.methodA();
    obj1.methodB(); 
    
    var obj2 = new Human();
    obj2.methodA();
    obj2.methodB();

三、为对象动态添加属性

function Human(name, age) {
        this.name = name;   // 成员属性如此定义
        this.age = age;
    }
    
    var obj1 = new Human("张三", 18); // 上面类声明中并没有这个属性
    
    obj1.sex = "男";
    alert(obj1.sex);

四、类的静态属性与静态方法

function Human(name, age) {
        this.name = name;   // 成员属性如此定义
        this.age = age;
    }
    
    Human.count = 100; // 静态属性
    Human.staticMethod = function() { alert("Hello " + Human.count); } // 静态方法
    
    Human.staticMethod(); // 调用静态方法
        
    var obj1 = new Human("张三", 18);
    obj1.staticMethod(); // 静态方法不能通过对象来调用,本行代码会报错!