`

理解李战的“甘露模型”

阅读更多
今天早上把李战的<<悟透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>
分享到:
评论

相关推荐

    [悟透JavaScript].李战.文字版

    [悟透JavaScript].李战.文字版

    悟透javascript

    在《悟透JavaScript》一书中,作者李战(leadzen)引领读者深入理解JavaScript的核心概念,强调了编程世界中数据与代码的基本关系及其在JavaScript中的独特体现。本书不仅因其文笔优美、代码示例丰富而备受推崇,更...

    悟透JavaScript-pdf版

    这部分内容对于理解和编写可维护的代码至关重要,因为JavaScript的面向对象模型与传统的类继承有所不同,需要特别理解。 函数式编程是JavaScript的另一大特色。书中详细讨论了函数作为一等公民、闭包、异步编程...

    一本悟透JavaScript的好书

    5. **事件与DOM操作**:在Web开发中,JavaScript常用于处理用户交互,书中可能详细讲解了事件模型和DOM(文档对象模型)的操作,如事件监听、元素选择与修改等。 6. **异步编程**:JavaScript的非阻塞特性使得异步...

    悟透JavaScript

    作者李战通过比喻和故事,将编程世界的本质——数据和代码的关系生动地阐述出来,帮助读者把握JavaScript的核心概念。 在书中,作者指出,编程世界的基础是数据和代码。数据如同静态的物质,保持自身特性;而代码则...

    2021-2022年收藏的精品资料给历届本科生的样本:开题报告中英文摘要及参考文献.doc

    1. **跨文化交际**:跨文化交际是研究不同文化背景下人们的交流方式和理解过程的学科。它涉及到语言、习俗、价值观等方面的对比和理解。 2. **谈话发起**:在交际中,谈话发起是打破沉默、开始交流的关键步骤,它...

    《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf

    《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片...

    javascript真经

    随着面向对象编程(OOP)思想的普及,数据和代码被紧密地结合起来,形成了易于理解和管理的对象模型。这种方式不仅简化了复杂的数据结构,还提高了代码的可读性和可维护性。在JavaScript中,这一点体现得尤为明显。 ...

    Javascript围棋(含行棋路线)

    9. **禅棋传说**:这是李战在书中创造的一个概念,可能是指通过编写围棋游戏,让读者在实践中理解JavaScript的深度和魅力,体验编程的乐趣,同时学习到围棋的智慧。 10. **学习资源**:这本书提供了一个实际的项目...

    博客园精华集_Web标准之道.pdf

    在Web设计领域,一些作者如爆牙齿、阿一、丁学、CatChen、李战等,通过他们的作品展示了自己的技术专长和对Web标准的深入探讨。 书中涉及的主题包括Web标准、CSS、JavaScript等,这些都是前端开发的核心技术。例如...

    胡壮麟我读系统功能语言学研究现状和发展趋势PPT课件.pptx

    本书包含了多个章节,分别由不同的作者撰写,如张德禄对理论基础和重要概念的阐述,朱珊对语调功能的探讨,何伟对加的夫语法的介绍,以及李战子和陆丹云在社会符号学视角下的多模态话语研究等。 黄国文和辛志英在...

    多模态话语分析视阈下英语口语教学的研究——以手机APP“英语趣配音”为例.pdf

    2003年,李战子在其文章中引入了多模态话语的社会符号学分析,并探讨了其在教学中的应用,开启了国内这一领域的研究新方向。 "英语趣配音"是一款利用多模态理念设计的手机APP,旨在通过短视频配音的方式提升用户的...

Global site tag (gtag.js) - Google Analytics