JavaScript 中的继承(下)
需要注意的是,这种实现继承的方法不能将参数传入到ClassA的构造器中,是一个缺陷。ClassB的所有属性和方法必需在将ClassB的prototype对象指向ClassA的实例之后进行附值。这样做是因为,prototype指向一个新的对象,在此之前prototype的属性和方法都被覆盖销毁。 对代码进行测试: 在上述代码中可以看出,使用prototype实现继承,instanceof操作符出现了另外的用途,在用构造起定义类实现继承时,instanceof不会出现这种效果。但是使用prototype不能支持多重继承。 在《》和上文的论述中可以了解到,使用构造器定义类实现继承和使用prototype实现继承均存在各自的缺陷,要避免出现这些情况,只有将两者混合使用。 混合方法 《》一文中曾经论述,创建一个类的最佳方法,是使用构造器的方法去定义属性,使用prototype定义方法。在继承中同样如此。
发布日期:2021-10-01 08:44:34
浏览次数:4
分类:技术文章
本文共 1240 字,大约阅读时间需要 4 分钟。
作者: Prototype 在《》一文中,我们了解到任何prototype的属性和方法都会被传递到该类的所有实例中,利用这一特性,使用prototype也能实现继承。 function ClassA() { } ClassA.prototype.id = 1998; ClassA.prototype.sayId =function(){ alert(this.id);};functionClassB(){ } ClassB.prototype=newClassA(); ClassB.prototype.name=""; ClassB.prototype.sayName=function(){ alert(this.name);}
var obj1 = new ClassA(); var obj2 = new ClassB();obj1.id = 1998;obj2.id= 2000;obj2.name ="悉尼奥运会";obj1.sayId(); //输出"1998"obj2.sayId(); //输出"1998"obj2.sayName(); //输出"悉尼奥运会"alert(obj2instanceofClassA); //输出"true"alert(obj2 instanceofClassB); //输出"true"
function ClassA(id) { this .id = id;} ClassA.prototype.sayId = function() { alert(this.id);};function ClassB(id, name) { ClassA.call(this, id); this.name =name;}ClassB.prototype = new ClassA(); ClassB.prototype.sayName=function(){ alert(this.name);}
转载地址:https://blog.csdn.net/iteye_263/article/details/81378564 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月09日 17时59分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
window10 caffe cpu-only安装
2019-04-26
YOLO-V3 Bbox预测解读
2019-04-26
论如何做到轻量级网络(Unet为例)
2019-04-26
Mask RCNN简图
2019-04-26
Cascade RCNN
2019-04-26
牛顿法
2019-04-26
对深度学习目前以及未来的看法 (AI时代可能延后,但总会到来)
2019-04-26
计算机网络应用层笔记
2019-04-26
地址栏输入网址enter查询后发生了什么
2019-04-26
计算机网络链路层知识点
2019-04-26
冲突域和广播域
2019-04-26
3NF分解(无损+4NF)
2019-04-26
计算机各层网络协议
2019-04-26
划分子网的意义
2019-04-26
AndroidQ 以上禁用 wifi 随机mac功能
2019-04-26
AngularJS学习之二:配置本地开发环境
2019-04-26
AngularJS学习之三:学习Angular
2019-04-26
AngularJS学习:Angular的模块
2019-04-26
Angular学习:控制器(未翻译完)
2019-04-26
Angular学习:$q
2019-04-26