- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
javascript设计模式与开发实践.pdf
2 第 1 章 面向对象的 JavaScript
第1章
面向对象的 JavaScript
JavaScript 没有提供传统面向对象语言中的类式继承,而是通过原型委托的方式来实现对象
与对象之间的继承。JavaScript 也没有在语言层面提供对抽象类和接口的支持。正因为存在这些
跟传统面向对象语言不一致的地方,我们在用设计模式编写代码的时候,更要跟传统面向对象语
言加以区别。所以在正式学习设计模式之前,我们有必要先了解一些 JavaScript 在面向对象方面
的知识。
1.1 动态类型语言和鸭子类型
编程语言按照数据类型大体可以分为两类,一类是静态类型语言 ,另一类是动态类型语言。
静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量类型要到程序运行的时
候,待变量被赋予某个值之后,才会具有某种类型。
静态类型语言的优点首先是在编译时就能发现类型不匹配的错误,编辑器可以帮助我们提前
避免程序在运行期间有可能发生的一些错误。其次,如果在程序中明确地规定了数据类型,编译
器还可以针对这些信息对程序进行一些优化工作,提高程序执行速度。
静态类型语言的缺点首先是迫使程序员依照强契约来编写程序,为每个变量规定数据类型,
归根结底只是辅助我们编写可靠性高程序的一种手段,而不是编写程序的目的,毕竟大部分人编
写程序的目的是为了完成需求交付生产。其次,类型的声明也会增加更多的代码,在程序编写过
程中,这些细节会让程序员的精力从思考业务逻辑上分散开来。
动态类型语言的优点是编写的代码数量更少,看起来也更加简洁,程序员可以把精力更多地
放在业务逻辑上面。虽然不区分类型在某些情况下会让程序变得难以理解,但整体而言,代码量
越少,越专注于逻辑表达,对阅读程序是越有帮助的。
动态类型语言的缺点是无法保证变量的类型,从而在程序的运行期有可能发生跟类型相关的
错误。这好像在商店买了一包牛肉辣条,但是要真正吃到嘴里才知道是不是牛肉味。
1.1 动态类型语言和鸭子类型 3
在 JavaScript 中,当我们对一个变量赋值时,显然不需要考虑它的类型,因此,JavaScript 1
是一门典型的动态类型语言。
动态类型语言对变量类型的宽容给实际编码带来了很大的灵活性。由于无需进行类型检测,
我们可以尝试调用任何对象的任意方法,而无需去考虑它原本是否被设计为拥有该方法。 2
这一切都建立在鸭子类型 (duck typing )的概念上,鸭子类型的通俗说法是:“如果它走起
路来像鸭子,叫起来也是鸭子,那么它就是鸭子。”
3
我们可以通过一个小故事来更深刻地了解鸭子类型。
从前在 JavaScript 王国里,有一个国王,他觉得世界上最美妙的声音就是鸭子的叫
4
声,于是国王召集大臣,要组建一个 1000 只鸭子组成的合唱团。大臣们找遍了全国,
终于找到 999 只鸭子,但是始终还差一只,最后大臣发现有一只非常特别的鸡,它的叫
声跟鸭子一模一样,于是这只鸡就成为了合唱团的最后一员。
5
6
7
8
文档评论(0)