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(); // 静态方法不能通过对象来调用,本行代码会报错!