JavaScript 中的继承(下)
需要注意的是,这种实现继承的方法不能将参数传入到ClassA的构造器中,是一个缺陷。ClassB的所有属性和方法必需在将ClassB的prototype对象指向ClassA的实例之后进行附值。这样做是因为,prototype指向一个新的对象,在此之前prototype的属性和方法都被覆盖销毁。 对代码进行测试: 在上述代码中可以看出,使用prototype实现继承,instanceof操作符出现了另外的用途,在用构造起定义类实现继承时,instanceof不会出现这种效果。但是使用prototype不能支持多重继承。 在《》和上文的论述中可以了解到,使用构造器定义类实现继承和使用prototype实现继承均存在各自的缺陷,要避免出现这些情况,只有将两者混合使用。 混合方法 《》一文中曾经论述,创建一个类的最佳方法,是使用构造器的方法去定义属性,使用prototype定义方法。在继承中同样如此。
发布日期:2021-10-01 08:44:34
浏览次数:1
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年03月09日 16时39分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
babylonjs 设置面板位置_babylonjs 空间坐标转为屏幕坐标
2019-04-21
oracle 查询中用case,oracle case when 在查询时候的用法。
2019-04-21
oracle正在运行的程序包,ORACLE PL/SQL编程详解之程序包的创建与应用
2019-04-21
php局部页面滚动,在访问另一页面后保留浏览器滚动位置 - php
2019-04-21
linux服务器怎么添加站点,如何增加站点或虚拟主机及文件说明
2019-04-21
linux系统输入指令,Linux系统基础 - 基本操作命令
2019-04-21
linux设备管理命令,Linux命令(设备管理).doc
2019-04-21
linux 中文utf-8转gbk编码,Linux平台下 GBK编码转UTF-8编码
2019-04-21
linux安装软件在boot,在Linux系统上安装Spring boot应用的教程详解
2019-04-21
取消linux自动登录,linuxdeepin 如何取消自动登录啊?
2019-04-21
linux线程存储,Linux系统编程手册:线程:线程安全和每线程存储
2019-04-21
linux批处理模式,巧用linux-top的批处理模式
2019-04-21
linux信号量机制例题,第二章 信号量机制及几个经典例题
2019-04-21
linux ba 模拟,在你的 Python 游戏中模拟引力 | Linux 中国
2019-04-21
c语言表达式3649的值是,535个C语言经典实例目录.doc
2019-04-21