六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 26|回复: 0

理解李战的“甘露模型”

[复制链接]

升级  34%

25

主题

25

主题

25

主题

秀才

Rank: 2

积分
101
 楼主| 发表于 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[member] = aClassDefine[member];}}//把基类对象放在原型链上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>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表