js构造继承是什么缺点和优点

构造继承是一种继承方式,通过使用构造函数来实现继承。在JavaScript中,构造继承是最早的继承方式之一,但随着ES6引入了类和基于类的继承方式,构造继承的应用逐渐减少。

构造继承的优点:

简单易用:构造继承是一种简单直观的继承方式,通过复制父类的属性和方法到子类,可以快速实现继承。

无需引入第三方库:构造继承是JavaScript自带的特性,无需引入外部库即可使用。

构造继承的缺点:

代码冗余:在构造继承中,子类需要复制父类的属性和方法,如果父类有大量的属性和方法,会导致子类代码冗余。

无法实现多态性:由于子类只是简单地复制了父类的属性和方法,因此无法实现多态性。如果父类的方法需要被子类重写,那么子类需要手动实现新的方法。

无法实现封装性:在构造继承中,父类的属性和方法都是公开的,子类可以直接访问和修改它们。这可能导致代码的可维护性和可读性降低。

无法实现继承链:在构造继承中,子类只能继承一个父类的属性和方法,无法实现多级继承。

相比之下,基于类的继承方式(如ES6中的类)更加灵活和强大。基于类的继承方式可以实现多态性、封装性和多级继承,同时也可以避免构造继承中的代码冗余问题。

在 JavaScript 中,构造继承是一种继承机制,它使用原型链来实现继承。这种继承方式不同于传统的基于类的继承方式,而是基于原型的继承方式。

在构造继承中,子类的原型对象被设置为父类的一个实例。这意味着子类可以访问父类的属性和方法,并且可以使用 this 关键字来调用父类的方法。

下面是一个简单的示例,演示了如何使用构造继承:

function Parent() {

  this.name = 'parent';

}

Parent.prototype.sayHello = function() {

  console.log('Hello, I am ' + this.name);

};

function Child() {

  Parent.call(this); // 调用父类的构造函数

  this.age = 5;

}

Child.prototype = Object.create(Parent.prototype); // 设置子类的原型为父类的一个实例

Child.prototype.constructor = Child; // 修复子类的构造函数引用

Child.prototype.sayHello = function() { // 重写父类的方法

  console.log('Hello, I am ' + this.name + ', and I am ' + this.age + ' years old.');

};

var child = new Child();

child.sayHello(); // 输出 "Hello, I am parent, and I am 5 years old."

在上面的示例中,Child 继承了 Parent 的属性和方法,并且重写了 sayHello 方法。通过使用 Parent.call(this),我们调用了父类的构造函数来初始化子类的实例。然后,我们通过将子类的原型设置为父类的一个实例来实现原型链的连接。最后,我们重写了 sayHello 方法,以在输出中添加子类特有的属性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基础算法之堆排序算法

堆排序是一种将顺序存储二叉树转化为大顶堆或者小顶堆的排序算法。顺序存储二叉树是一种特殊的二叉树存储方式,它将二叉树的节点按照一定的逻辑顺序存储在一个数组中,以便快速访问节点。大顶堆:父节点的值大于或等于其子节点的值的树&#xf…

Flutter 缩放动画组件封装与使用

在 Flutter 中,动画是为了提升用户体验而不可或缺的一部分。在应用程序中,缩放动画是常用的一种交互效果,可以使界面元素在用户交互时具有生动感。为了更好地组织代码和提高复用性,我们可以封装一个缩放动画组件,以下是…

Java中List接口两个实现,ArrayList类和LinkedList类的常用方法(一)

List接口 要了解List接口,就不得不说起Java的集合框架。 (该图来自菜鸟教程) Collection接口和Map接口 Java 集合框架主要包括两种类型的容器,集合Collection和图Map。 Collection接口代表了单列集合,它包含了一组…

1月下半笔记(个人向)

最近才开始看d2l(这种东西早该在两年前看的,拖到现在了) 为了做项目还得学一手OpenGL(被windows安装GLFW逼疯了) 1.15 打完ICPC EC final回来,也许可以出一篇博客写下简单的题解。 对蛋白质相似空间子结…

如何获取一个德国容器

1.注册discord账号 discord注册网址:https://discord.com/ 下面是容器的discord邀请链接 https://discord.com/Discord邀请链接:https://discord.com/invite/jVMSWrchC4 2.进入discord群聊点击link 在点击网址,这个网址每星期都会变就是图…

Docker容器添加映射端口

方式一 简单粗暴(需要等一段时间) 直接给现在容器停了(当然你要不想停也可以,只是打包会慢一点,当然我是没出意外,如果你怕出现特殊情况,那就先把容器停了),然后把这个容…

得实云打印助力CRM和电商平台高效无代码集成

简化打印流程,实现无缝连接 得实云打印提供的无缝连接体验,特别适合电商平台和客户服务系统。无需担忧传统打印设备的连接问题,得实云打印通过其API让用户能够轻松实现订单打印、物流单据打印等功能。通过得实的技术,用户能够随时…

C语言总结十三:程序环境和预处理详细总结

了解程序的运行环境可以让我们更加清楚的程序的底层运行的每一个步骤和过程,做到心中有数,预处理阶段是在预编译阶段完成,掌握常用的预处理命令语法,可以让我们正确的使用预处理命令,从而提高代码的开发能力和阅读别人…

图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别?

问题描述:图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别? 问题1解答: 极线是通过极线几何学…

qt-c++多窗口编程

1、QMessageBox 消息对话框 QMessageBox继承自QDialog,显示一个模态对话框。用于用户前台信息通知或询问用户问题,并且接收问题答案。 QDialog再Qt源码中,派生类往往都是一些在特定场合下使用的预设好的对话框窗口。这些窗口无需创建对象&…

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 蓝凌EIS智慧协同平台frm_form_upload.aspx接…

【QA】Linux-CentOS-解决mysqlclient无法安装

文章目录 文章概述解决方式1:直接找到mysqlclient的whl安装包python3.8-x86-64位其他适配版本的whl安装包 解决方法2:先安装相关依赖,再单独安装mysqlclient解决方式3:根据错误信息找到根源,一步一步解决 文章概述 li…

C#winform上位机开发学习笔记2-串口助手的中文支持功能添加

分为两步: 1.串口接收支持中文显示 1.1.在软件初始化时写入此代码以支持汉字显示 //串口接收支持中文显示serialPort1.Encoding Encoding.GetEncoding("GB2312"); //串口1的解码支持GB2312汉字 2.串口发送支持中文输出 //支持中文输出Encoding Chine…

【备战蓝桥杯】图的遍历问题

蓝桥杯备赛 | 洛谷做题打卡day10 文章目录 蓝桥杯备赛 | 洛谷做题打卡day10图的遍历题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题解代码我的一些话 图的遍历 题目描述 给出 N N N 个点, M M M 条边的有向图,对于每个点 v v v&…

OpenAI 公布2024选举虚假信息打击计划

据统计,2024 年预计将有 50 多个国家举行大选,虚假信息的威胁成为人们关注的焦点。 人工智能聊天机器人 ChatGPT 和图像生成器 DALL-E 的开发商 OpenAI 近日宣布了一项新的措施,以防止在今年大选之前再次出现虚假信息滥用和误导事件。 本周…

Day31- 贪心算法part05

一、无重叠区间 题目一:453. 无重叠区间 435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 主要思想是优先保留结束时间早的区间,这样…

域环境权限提升

Windows系统配置错误 在Windows系统中,攻击者通常会通过系统内核溢出漏来提权,但是如果碰到无法通过系统内核溢出漏洞法国提取所在服务器权限的情况,就会系统中的配置错误来提权。Windows系统中常见哦欸之错误包括管理员凭证配置错误&#x…

思绪记忆:伦敦金是以美元计价的黄金!

伦敦金是以美元计价的黄金衍生投资品种,是一种交易网络遍及各个主要市场的黄金保证金交易方式。目前投资者通过香港到伦敦金平台入市,只需要付出2%的保证金,就可以拥有一手100盎司、价值20多万的标准化黄金合约的交易权益,无论在涨…

downloadjs插件简单使用

一、下载安装 npm install downloadjs -D二、引入 import download from "downloadjs"三、简单使用 download(url)需要注意的是,如果download()的参数大于1个,则第一个参数是数据流,则应该使用下面的方法来下载 fet…

Linux之Centos7常用命令及软件离线安装

Linux之Centos7常用命令及软件离线安装 文章目录 Linux之Centos7常用命令及软件离线安装1. Centos7-Minimal安装命令无法使用1. yum无法使用2.ifconfig命令无法使用 2. CentOS7常用配置修改1. 修改IP地址2. 修改hostname3. 修改hosts文件4. 用户和用户组5.安装vim及其他工具6. …