JavaScript中基于原型的继承的实现与分析

JavaScript中基于原型的继承的实现与分析摘要:本文主要介绍JavaScript中基于原型的继承的实现方式,通过实例的说明,增强读者对基于类的继承和基于原型的继承的理解,同时分析了基于原型的继承模式的利弊。关键词:JavaScript;基于原型的继承;基于类的继承:TP391随着Node.js的诞生,JavaScript已经不仅仅是一门编程语言,其在客户端和服务器端的双重主导地位,使得"一切皆为JavaScript”成为一种必然趋势。近年来,JavaScript已经从一门简单的脚本语言进化成为一门强大的编程语言。根据多年来的教学经验,JavaScript是一种既简单又难以掌握的语言。而其难点之一,就在于对其原型对象及其继承机制的理解。1基于类的继承和基于原型的继承首先,现在广为流传的面向对象的编程语言,例如:Java,是基于类的语言。在基于类的语言中,对象是类的实例,并且可以从另一个类继承。而在基于类的语言中,---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---继承的好处主要有两点。1.1代码重用性高。如果我们新创建的类与已有的类有绝大部分相类似,则没有必要再重新定义这个完整的类。最好的方式,就是只说明新创建的类与已有的类之间的不同之处。而继承,正好实现了代码的重用,大大减少了软件开发的成本。1.2继承引入了一套类型系统的规范。这样使得程序员可以将子类的对象直接赋值给父类的引用,无需再编写显式的类型转化。既减轻了工作量又保证了类型系统在安全上的优势。而对于JavaScript这种弱类型语言来说,我们不需要考虑类型转化问题,对象继承关系更关注于这个对象能做什么而不是它从哪里来。为此JavaScript提供了一套更为丰富的代码重用模式。JavaScript是一门基于原型的语言,所以对象可以直接从其它对象继承而来。2原型对象的理解在认识原型对象之前,我们还应该理解一下基于类的语言和基于原型的语言对于类,对象,实例定义的差别。在基于类的语言中,程序员需要单独对类进行定义,并且通过构造器来创建该类的实例,可以使用new操作符来实现创建类的实例。在JavaScript中也有着相类似的模式,---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---与Java不同的是,JavaScript没有类定义和特殊的构造器定义。需要程序员自己定义一个构造函数来创建属性,而所有的函数都可以被用来定义构造函数。所谓实例,对于基于类的语言来说,一个实例就是一个类的个体成员,而类本身只是对对象属性和行为的一种抽象定义。在JavaScript中,实例和类则没有这样的本质区别,实例可以看做是对象。了解到了JavaScript对于对象的定义,接下来我们来理解一下原型对象的概念。在JavaScript中,只要创建一个新函数,就会根据一组特定规则为该函数创建一个pro-totype属性,而这个属性指向函数的原型对象。在默认情况下原型对象会自动获得一个constructor属性,而这个属性包含一个指向prototype属性所在函数对象的指针。当调用构造函数创建一个新实例后,该实例所包含的一个指针指向构造函数的原型对象。而在ECMA-262第5版中,这个指针叫做[[prototype]]o下面我们用Employee这个例子,简单说明一下构造函数,原型函数以及新创建的实例的实现以及在内存中的关系。inherit()函数的实现就是对原型式模式的应用,它可以防止库函数对那些不受控制的对象的意外修改。原型式模式传入的是引用类型值,所以也存在共享属性的问题,如组合模式一样,也可以用构造函数的类似方式解决这一---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---问题。参考文献:[1]CrockfordD.JavaScript语言精粹[M].北京:电子工业出版社,2009.[2]FlanaganD.JavaScript权威指南(第六版)[M].北京:中国电力出版社,2001.[3]NicholasC.ZakasJavaScript高级程序设计(第三版)[M].北京:人民邮电出版社,2012.作者简介:王贯飞(1966.04-),女,副教授,本科,主要从事计算机多媒体、Flash动画编程、多媒体课件制作。作者单位:辽宁轻工职业学院,辽宁大连116100---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?