dyldragon 发表于 2013-2-7 16:28:35

理解李战的“甘露模型”

今天早上把李战的<<悟透JavaScript>>看完了,感觉里面的所说的甘露模型很好,即通俗又易懂。让我对js的通用类定义,继承,对象的创建又有更深的理解。废话少说,上DEMO。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>类的定义,对象的创建,继承</title></head><body><script type="text/javascript">/** *aBaseClass: 基类对象 类型: object *aClassDefine: 自身扩展对象 类型: object *主要功能是用来继承基类,并可以自定义新功能,派生出新的类。 */function Class(aBaseClass, aClassDefine) {function class_() {this.Type = aBaseClass;for(var member in aClassDefine) {this = aClassDefine;}}//把基类对象放在原型链上class_.prototype = aBaseClass;return new class_();}/** *aClass: 要实例化的类名称 *aParams: 传给构造函数的参数,这里我把类的构造函数统一命名为create *通用实例化类模块 */function New(aClass, aParams) {function new_() {this.Type = aClass;if(aClass.create) {aClass.create.apply(this, aParams);}}new_.prototype = aClass;return new new_();}Person = {create: function(name, age) {this.name = name;this.age = age;},sayHello: function() {alert("Hello I'm " + this.name);},sayOld: function() {alert("Hello I'm " + this.name + "," + this.age + "years old.");}}var superMan = Class(Person, {fly: function() {alert("Hello I'm " + this.name + "," + this.age + "years old,I can fly.");}});//调用通用实例化模块,并以数组形式传递构造参数var superMan1 = New(superMan, ["superMan1",24]);superMan1.sayHello();superMan1.sayOld();superMan1.fly();</script></body></html>
页: [1]
查看完整版本: 理解李战的“甘露模型”