javascript有哪些方法能够实现继承

网上科普有关“javascript有哪些方法能够实现继承”话题很是火热,小编也是针对javascript有哪些方法能够实现继承寻找了一些与之相关的一些信息进行分析,如果能碰巧解...

网上科普有关“javascript有哪些方法能够实现继承”话题很是火热,小编也是针对javascript有哪些方法能够实现继承寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

JavaScript中要实现继承,其实就是实现三层含义:

1、子类的实例可以共享父类的方法;

2、子类可以覆盖父类的方法或者扩展新的方法;

3、子类和父类都是子类实例的“类型”。

JavaScript中,并不直接从语法上支持继承,但是可以通过模拟的方法来实现继承,以下是关于实现继承的几种方法的总结:

1、构造继承法

2、原型继承法

3、实例继承法

4、拷贝继承法

1、构造继承法:

在子类中执行父类的构造函数。

1<SCRIPT LANGUAGE="JavaScript">

2 <!--

3 function dwn(s)

4 {

5 document.write(s+'<br/>');

6 }

7

8 //定义一个Collection类型

9 function Collection(size)

10 {

11 this.size = function(){return size}; //公有方法,可以被继承

12 }

13

14 //定义一个_Collection类型

15 function _Collection(_size)

16 {

17 this._size = function(){return _size}; //公有方法,可以被继承

18 }

19

20 Collection.prototype.isEmpty = function() //静态方法,不能被继承

21 {

22 return this.size() == 0;

23 }

24

25 //定义一个ArrayList类型,它“继承”Colleciton类型

26 function ArrayList()

27 {

28 var m_elements = []; //私有成员,不能被继承

29 m_elements = Array.apply(m_elements,arguments);

30

31 //ArrayList类型继承Colleciton

32 this.base = Collection;

33 this.base.call(this,m_elements.length);

34

35 this.base = _Collection; //可以实现多态继承

36 this.base.call(this,m_elements.length);

37

38 this.add = function()

39 {

40 return m_elements.push.apply(m_elements,arguments);

41 }

42

43 this.toArray = function()

44 {

45 return m_elements;

46 }

47 }

48

49 ArrayList.prototype.toString = function()

50 {

51 return this.toArray().toString();

52 }

53

54 //定义一个SortedList类型,它继承ArrayList类型

55 function SortedList()

56 {

57 //SortedList类型继承ArrayList

58 this.base = ArrayList;

59 this.base.apply(this,arguments);

60

61 this.sort = function()

62 {

63 var arr = this.toArray();

64 arr.sort.apply(arr,arguments);

65 }

66 }

67

68 //构造一个ArrayList

69 var a = new ArrayList(1,2,3);

70 dwn(a); //1,2,3

71 dwn(a.size()); //3 a从Collection继承了size()方法

72 dwn(a.isEmpty); //undefined 但是a没有继承到isEmpty()方法

73

74 dwn(a._size()); //3 可以实现多态继承

75

76 //构造一个SortedList

77 var b = new SortedList(3,1,2);

78 dwn(b.toArray());

79 b.add(4,0); //b 从ArrayList继承了add()方法

80 dwn(b.toArray()); //b从ArrayList继承了toArray()方法

81 b.sort(); //b自己实现sort()方法

82 dwn(b.toArray());

83 dwn(b);

84 dwn(b.size()); //b从Collection继承了size()方法

85 //-->

86 </SCRIPT>

2、原型继承法:

JavaScript是一种基于原型的语言。

要了解什么是“原型继承法”,先了解一下prototype的特性:prototype的最大特性是能够让对象实例共享原型对象的属性,因此如果把某个对

象作为一个类型的原型,那么我们说这个类型的所有实例都一这个对象为原型。这个时候,实际上这个对象的类型也可以作为那些以这个对象为原型的实例的类型。

假如:Point类的对象作为Point2D类型的原型(Point2D.prototype = new

Point(2)),那么说Point2D的所有实例都是以Point类的对象为原型。此时,实际上Point类就可以作为Point2D类型的对象的类

型(相当于Point2D类型“继承”了Point类型)。

见例:

1 <SCRIPT LANGUAGE="JavaScript">

2 <!--

3 function dwn(s)

4 {

5 document.write(s+"<br/>");

6 }

7

8 function Point(dimension) //定义一个Point类

9 {

10 this.dimension = dimension;

11 }

12

13 Point.prototype.distance = function() //静态方法,可以被继承

14 {

15 return this.dimension*2;

16 }

17

18 function Point2D(x,y) //定义一个Point2D类

19 {

20 this.x = x;

21 this.y = y;

22 }

23

24 Point2D.prototype = new Point(2); //运行“原型继承法”使Point2D继承Point

25

26 function Point3D(x,y,z) //定义Point3D类

27 {

28 this.x = x;

29 this.y = y;

30 this.z = z;

31 }

32

33 Point3D.prototype = new Point(3); //Point3D继承Point类

34

35 var p2 = new Point2D(1,2); //构造一个Point2D对象

36

37 var p3 = new Point3D(1,2,3); //构造一个Point3D对象

38

39 dwn(p2.dimension); //2

40 dwn(p3.dimension); //3

41 dwn(p2.distance()); //4 可以继承静态方法

42 dwn(p3.distance()); //6 可以继承静态方法

43

44 dwn(p2 instanceof Point2D); //p2是Point2D对象

45 dwn(p2 instanceof Point); //Point2D继承Point,p2是Point对象

46

47 dwn(p3 instanceof Point3D); //p3是Point3D对象

48 dwn(p3 instanceof Point); //Point3D继承Point,p3是Point对象

49

50 //-->

51 </SCRIPT>

3、实例继承法

构造继承法和原型继承法各有各的缺点,如:

构造继承法没有办法继承类型的静态方法,因此它无法很好的继承JavaScript的核心对象。

原型继承法虽然可以继承静态方法,但是依然无法很好地继承核心对象中的不可枚举方法。

其中,javascript核心对象包括:

Array 表述数组。

Boolean 表述布尔值。

Date 表述日期。

Function 指定了一个可编译为函数的字符串 JavaScript 代码。

Math 提供了基本的数学常量和函数;如其 PI 属性包含了π的值。

Number 表述实数数值。

Object 包含了由所有 JavaScript 对象共享的基本功能。

RegExp 表述了一个正则表达式;同时包含了由所有正则表达式对象的共享的静态属性。

String 表述了一个 JavaScript 字符串。

(1)构造继承法的局限性:

1 <SCRIPT LANGUAGE="JavaScript">

2 <!--

3 function MyDate()

4 {

5 this.base = Date;

6 this.base.apply(this,arguments);

7 }

8

9 var date = new MyDate();

10 alert(date.toGMTSring()); //对象不支持此方法或属性

11 //核心对象(Date)的某些方法不能被构造继承,原因是核心对象并不像我们自定义的一般对象那样在构造函数里进行赋值或初始化操作。

12 //-->

(2)原型继承的局限性

1 <SCRIPT LANGUAGE="JavaScript">

2 <!--

3 function MyDate()

4 {

5

6 }

7 MyDate.prototype = new Date();

8 var date = new MyDate();

9 alert(date.toGMTSring()); //'[object]不是日期对象'

10 //-->

11 </SCRIPT>

以上说明了“构造继承法”和“原型继承法”的局限性(局限之一:不能很好的继承核心对象),下面介绍如何用实例继承法来继承核心对象。

在介绍之前首先了解以下关于构造函数:

构造函数通常没有返回值,它们只是初始化由this值传递进来的对象,并且什么也不返回。如果函数有返回值,被返回的对象就成了new表达式的值。

1 <SCRIPT LANGUAGE="JavaScript">

2 <!--

3 function dwn(s)

4 {

5 document.write(s+'<br/>');

6 }

7 function MyDate()

8 {

9 var instance = new Date(); //instance是一个新创建的日期对象

10 instance.printDate = function() //对日期对象instance扩展printDate()方法

11 {

12 dwn(instance.toLocaleString());

13 }

14 return instance; //将instance作为构造函数的返回值返回

15 }

16

17 var date = new MyDate();

18 dwn(date.toGMTString());

19 date.printDate();

20 dwn(date instanceof MyDate); //false

21 dwn(date instanceof Date); //true

22 //对象的构造函数将会是实际构造的对象的构造函数(new Date()),而不是类型本身的构造函数(new MyDate())

23 //-->

24 </SCRIPT>

4、拷贝继承法

拷贝继承法是通过对象属性的拷贝来实现继承。

1 <script language="JavaScript">

2 function Point(dimension)

3 {

4 this.dimension = dimension;

5 }

6

7 var Point2D = function(x,y)

8 {

9 this.x = x;

10 this.y = y;

11 }

12

13 Point2D.extend = function()

14 {

15 var p = new Point(2);

16 for(var each in p) //将对象的属性进行一对一的复制。

17 {

18 //this[each] = p[each];

19 this.prototype[each] = p[each];

20 }

21 }

22 Point2D.extend();

23 //alert(Point2D.dimension);

24 alert(Point2D.prototype.dimension);

25 </script>

第一部分: Java语言篇

1 《Java编程规范》

星级:

适合对象:初级,中级

介绍:作者James Gosling(Java之父),所以这本书我觉得你怎么也得读一下。对基础讲解的很不错。

2 《Java核心技术:卷Ⅰ基础知识》

星级:

适合对象:初级,中级

介绍:官方机构图书,你怎么也得有一本,这本书比较全面而且易懂。放在案旁用到的时候查一查,看一看。是学习入门必备书。

当然还有II

注:新手必备

3 《Java编程思想》

星级:

适合对象:初级,中级

介绍:这本书的作者就是著名的C++编程思想,对OO的理解很好,Java作为一门面向对象的语言,你学习Java最好也同时参考这本书进行入门学习。

注:新手必备

4 《Effective Java》

星级:

适合对象:初级,中级,高级

介绍:作者是Java的第2号人物,目前是Google的Java老大,是James Gosling强力推荐的一本书。

5 《Java与模式》

星级:

适合对象:中级,高级

介绍:是国人写的难得的值得购买的一本书,当然现在也有大话设计模式之类的出现,这本书出现的比较早,是初级到中高级必读的图书之一。

注:没有理解面向对象前,读这本书没有意义。最好是有过项目经验再读比较好。

6 《SCJP学习指南》

星级:

适合对象:初级,中级

介绍:官方考试必备图书,对你检验自己学些Java知识情况很有帮助,这本书最适合学生阅读,这本书理解透了,找工作面试Java题目不会有任何问题,工作多年的拿这里的题目不会做的都很多。

7 《Java数据结构和算法》

星级:

适合对象:初级,中级,高级

介绍:这本书使用Java语言描述了我们常用的数据结构,写的非常不错。值得一看,不过目前基本断货(这个就是最有利的说明)。

8《Junit Recipes中文版:程序员实用测试技巧》

星级:

适合对象:初级,中级,高级

介绍:目前敏捷盛行,这个你是不管怎样也得看一看的。

第二部分:中级进阶篇

1《spring in action》

星级:

适合对象:初级,中级,高级

介绍:Spring框架,作为Java程序员是怎么都必须学习的。IOC、AOP是你以后见到的软件的基础。另外基本上很多东西都和Spring产生联系。

2《精通Spring 2.x:企业应用开发详解》

星级:

适合对象:初级,中级,高级

介绍:书中提供了Spring中的目前最流行用法的实例和实用情况。

3《iBatis实践》

星级:

适合对象:初级,中级,高级

介绍:iBatis必看参考书,in action从未让人失望过。

4 《精通hibernate:Java对象持久化技术详解》

星级:

适合对象:初级,中级,高级

介绍:Hibernate必备参考书,也是国人写的,难得的一本好书,而且作者是个MM。

5 《Struts 2.1权威指南》

星级:

适合对象:初级,中级

介绍:学习Struts2的一本国人写的不错的书,不过名称显得大了点。权威指南应该只有作者才可以这么叫。

6 《Maven实践》

星级:

适合对象:初级,中级

介绍:从Ant到Maven现在时大势所趋了,您怎么也得学习一下。

7《expert one-on-one J2EE Development without EJB中文版》

星级:

适合对象:初级,中级

介绍:这个其实是Spring的基础,作者巨牛。强力推荐,可惜是基本买不到这本书了。

8 《Tomcat权威指南》

星级:

适合对象:初级,中级

介绍:做Java Web的一般都必须学习这个,为Apache的开源项目。

9 《Head First Servlets & Jsp》

星级:

适合对象:初级,中级

介绍:Servlet和Jsp作为JavaEE程序员是必须要掌握好的,而且Head First系列从未令人失望。

10 《Head First HTML与CSS.XHTML》

星级:

适合对象:初级

介绍:介绍Web前端的不错的入门书。

11 《HTML+CSS网页设计与布局从入门到精通》

星级:

适合对象:初级

介绍:这本书最大的特点是带光盘而且讲解的不错,应用实例也不错。

12 《JavaScript宝典》

星级:

适合对象:初级,中级,高级

介绍:是学习js的必备参考工具书之一,我记得几年前国内都没有中文版,我都把整本书打印出来看了一下。

13 《JavaScript权威指南》

星级:

适合对象:初级,中级,高级

介绍:是学习js的必备参考工具书之一。我看我同事购买了,看起来还不错。

14 《征服Ajax Web2.0开发技术详解》

星级:

适合对象:初级,中级

介绍:这本书当年是CSDN送给我的,感觉还是不错的。对学习AJAX有帮助。

15 《jQuery基础教程》

星级:

适合对象:初级,中级,高级

介绍:从这个开始学习jQuery才是根本。不然以后遇到的很多奇怪问题不知所以然。jQuery个人感觉已经成为目前的javascript标准库了,插件无数,大大简化了前端工作。

16 《XML入门经典》

星级:

适合对象:初级,中级,高级

介绍:很多人觉得没必要买XML书籍,不过我还是觉得推荐一本给你作为工具书,而且看本书可以使得你对XML方方面面有个了解。里面不少东西还是用到的。

17 《敏捷软件开发(原则模式与实践)》

星级:

适合对象:中级,高级

介绍:敏捷大师的著作,您怎么也得看看。这本书包含了UML的讲解,所以我就不推荐UML的书了。

18 《重构:改善既有代码的设计》

星级:

适合对象:中级,高级

介绍:同样是大师的杰作,不可不看。最重要的是让你明白软件也是一步步改进的,不是一蹴而就的。

19 《代码整洁之道》

星级:

适合对象:中级,高级

介绍:软件工程的理想编码是需要无数人编出来的代码像一个人写的。这本书当作规范就不错。

星级:20 《Java Web Service》

适合对象:中级,高级

介绍:不过还是推荐一下我看过的吧。了解基本概念还是要本书的。

注意:WebService的图书我还真不知道给您推荐什么,都不怎么样。您做个实例就明白,不过怎么做接口才是核心。

第三部分:高级篇

1 《Java消息服务》

星级:

适合对象:初级,中级,高级

介绍:消息机制是以前分布式经常实用到的,与此相关的有Apache Active MQ进行开发,而且这本书的实例也是用的AQ。

星级:2 《Java并发实践》

适合对象:中级,高级

介绍:这本书也是牛人们强力推荐的,学习并发必备。

Java Thread Programming

另外推荐一本英文的:

3 《Enterprise JavaBeans 3.0中文版》

星级:

适合对象:中级,高级

介绍:EJB技术在大型系统中使用,主要有银行等金融机构。是开发分布式程序的选项之一,不过我不喜欢,其实银行使用的也不怎么的。结合JavaEE容器使用,开源的有JBoss,商用的有IBM和Oracle支持。

4 《Hadoop权威指南》注:该类型书也有Head First系列,也很不错。另外《J2EE应用与BEA WebLogic Server》书也很不错。

星级:

适合对象:中级,高级

介绍:云计算必备图书。作为分布式计算的工具,Hadoop目前可以说是市场上唯一成熟的产品,而且大家也都向其看齐。而起云计算炙手可热,你搞明白这本书就大概明白了什么是云以及怎么做云。做Hadoop的没人不读这本书,没读过的也不要说你搞过Hadoop。

星级:附: 《Linux 鸟哥的私房菜》

适合对象:初级,中级,高级

介绍:这本书对使用和学习Linux很有用,大而全,解释的也不错,常用的基本都有了,一本在手,绝无顾忧。

最后,推荐一本贯彻全部软件工程和全文的图书《代码大全》,只是一句话:两届Software Development Magzine Jolt Award震撼大奖得主。

最近发现有人购买我的2手书:附加:

深入Java虚拟机(原书第2版)附光盘---SUN公司核心技术丛书

所以我推荐一下下面的这本:

The Java Virtual Machine Specification

个人认为这个写的比较好,并且更权威。

关于“javascript有哪些方法能够实现继承”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[安卉]投稿,不代表小熊号立场,如若转载,请注明出处:https://xx-scm.com/cshi/202604-179060.html

(134)

文章推荐

  • 刘云的学术简介

    网上科普有关“刘云的学术简介”话题很是火热,小编也是针对刘云的学术简介寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。 (一)专著1.刘云《汉语篇名的篇章化研究》,华中师范大学出版社,2005年11月。2.刘云《汉语虚词知识库的建设》,华中师范大学出版社,20

    2025年03月07日
    380
  • 专用辅助“微信打麻将如何开挂(透视挂真的假的)

    专用辅助“微信打麻将如何开挂网上科普有关“专用辅助“微信打麻将如何开挂”话题很是火热,小编也是针对专用辅助“微信打麻将如何开挂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,专用辅助“微信打麻将如何开挂这款游戏可以开挂的,确实是有挂的

    2025年03月12日
    64
  • 实操教程“牵手跑得快有没有技巧(真的有挂)

    实操教程“牵手跑得快有没有技巧网上科普有关“实操教程“牵手跑得快有没有技巧”话题很是火热,小编也是针对实操教程“牵手跑得快有没有技巧寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,实操教程“牵手跑得快有没有技巧这款游戏可以开挂的,确实

    2025年03月14日
    65
  • 疫情期间终南山感人的故事(疫情中终南山的故事)

    中国钟南山爷爷作文300字?钟南山爷爷,您不是一个人在战斗!冲在抗疫前线的白衣天使们在战斗,奔赴在第一线的军人们在战斗,守在自己平凡岗位的人们在战斗?还有我们!我们也和您一起战斗,祖国人民是您最坚硬的后盾。初一作文300字篇1梦想是人生的风向标,指引我们前进;梦想是高山上的雪莲,圣洁美丽;梦想

    2025年03月27日
    93
  • 实测辅助”川南字牌别人开挂怎么看”果然有挂

    网上科普有关“川南字牌别人开挂怎么看”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,川南字牌别人开挂怎么看这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会

    2025年05月22日
    51
  • 辅助开挂工具“微信麻将开挂器(详细透视开挂教程)

    网上科普有关“微信麻将开挂器”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,微信麻将开挂器这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多用户的牌

    2025年07月03日
    31
  • 辅助教程实测“欢乐途游麻将怎样提高胜率”其实确实有挂

    网上科普有关“欢乐途游麻将怎样提高胜率”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,欢乐途游麻将怎样提高胜率这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌

    2025年07月17日
    9
  • 辅助开挂工具“闲逸斗地主有没有挂(详细真的有挂)

    闲逸斗地主有没有挂网上科普有关“闲逸斗地主有没有挂”话题很是火热,小编也是针对闲逸斗地主有没有挂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,闲逸斗地主有没有挂这款游戏可以开挂的,确实是有挂的,通过微信【】很多玩家在这款游戏中打牌都

    2025年07月29日
    6
  • 玩家必搜“手机打跑得快真的有挂吗”分享装挂技巧步骤

    手机打跑得快真的有挂吗网上科普有关“手机打跑得快真的有挂吗”话题很是火热,小编也是针对手机打跑得快真的有挂吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,手机打跑得快真的有挂吗这款游戏可以开挂的,确实是有挂的,通过微信【】很多玩家在

    2025年08月26日
    23
  • 开挂工具“口袋娱乐挂真的有吗”果然有挂

    网上科普有关“口袋娱乐挂真的有吗”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,口袋娱乐挂真的有吗这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多

    2025年08月29日
    10

发表回复

本站作者后才能评论

评论列表(4条)

  • 安卉
    安卉 2026年04月16日

    我是小熊号的签约作者“安卉”!

  • 安卉
    安卉 2026年04月16日

    希望本篇文章《javascript有哪些方法能够实现继承》能对你有所帮助!

  • 安卉
    安卉 2026年04月16日

    本站[小熊号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 安卉
    安卉 2026年04月16日

    本文概览:网上科普有关“javascript有哪些方法能够实现继承”话题很是火热,小编也是针对javascript有哪些方法能够实现继承寻找了一些与之相关的一些信息进行分析,如果能碰巧解...