手机版

Javascript播放和继承(2)

时间:2021-11-08 来源:互联网 编辑:宝哥软件园 浏览:

毫无疑问,这个方法很容易理解,在子类中调用父类的构造函数。此外,这种方法最大的优点之一是结构继承可以实现多重继承。查看此代码:复制代码如下: function a(){ } function b(){ } function c(){ this。父亲=a;this .父亲();删除这个。父亲;父亲=乙;this .父亲();删除这个。父亲;}但是这种方法也有这样那样的缺点:熟悉面向对象,我们来看一个C#代码:复制的代码如下:class程序{ static void main(string[]args){ bb=new();布尔温度=(类型(A))。IsInstanceOfType(b);控制台。WriteLine(临时);} } a类{ public a(){ } } class b : a { public b(){ } }结果如何?b当然是A : 的一个例子。

但是,我们对上面构造继承的Javascript代码做这个测试:复制的代码如下:函数a () {}函数b () {}函数c () {this。父亲=a;this .父亲();删除这个。父亲;父亲=乙;this .父亲();删除这个。父亲;} var c=新C();警报;但结果并不是我们想象的那样:

其实很容易解释:构造继承只是通过调用父类的构造方法复制的父类的属性,其他的都没有搜索过,所以这种继承方法在很多资料中都不叫继承。看到缺点的同时记住优点:支持多重继承。我们看C#的继承,发现C#和这种继承有两个典型的区别:C #不支持多重继承,还有上面提到的结构继承的缺点。然后一种新的继承方式出现了,我们成为了原型继承。看到名字,我们可以大致理解为原型继承利用原型的特性来实现继承。这是Javascript中最流行的继承方法。如果不了解原型,请关注我的另一篇文章:《玩转原型——prototype》。让我们先看看代码。这里我指的是《Javascript王者归来》中的一段代码:复制代码的代码如下:功能点(维度){this。维度=维度;这个。test=function(){ alert(' Success ');} }函数Point2D(x,y){ this . x=x;this.y=y} Point 2d . prototype=new Point(2);var p=新点2D(3,4);测试();

测试通过。解释Point2D继承了父类的方法,然后查看实例。警报(点的实例);

成功!好了,我们来分析一下原型继承:原型继承的优点我就不多说了,结构简单,容易理解,可以是实例。但他的缺点也很明显。还记得我最后一个关于动物、人和女孩的例子吗?我们用原型继承实现如下:复制代码如下:函数animal () {this。run=function () {alert('我可以运行');};}功能人员(姓名){此。Say=function(){alert('我叫' this . name ');} } people . prototype=new Animal();函数Girl(姓名、年龄){ this.age=年龄;这个。introduction=function(){ alert('我的名字是' this.name '。我是“这个年龄”;};}女孩.原型=新人(?);注意我红色粗体部分的代码行。People是Girl的原型,所以初始化People的时候要传入name参数,但是每个Girl的名字都不一样,所以不使用原型继承的第一种情况:原型继承阶段不确定用什么参数初始化父对象。场景二:很简单,每个类只能有一个原型,也就是说原型继承不能用于多重继承。这既是好事也是坏事。因为:在Java、C#等面向对象语言中,不支持多重继承,认为多重继承与面向对象不兼容,不能实现多接口!好了,今天就到这里。综上所述,原型继承解决了结构继承的一些问题,引入了一些新的问题。一般来说,原型继承是应用最广泛的继承方式,也是Javascript语法中真正实现继承的方式!

版权声明:Javascript播放和继承(2)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。