JavaScript里实现继承的几种方式
JavaScript 中的继承可以通过以下几种方式来实现:
1、原型链继承:通过将子类的原型对象指向父类的实例来实现继承。这种方式的优点是实现简单,缺点是父类的私有属性和方法子类是不能访问的。
function Parent() {this.name = 'parent';this.age = 30;
}
Parent.prototype.sayName = function() {console.log(this.name);
}function Child() {Parent.call(this);
}
Child.prototype = new Parent();
Child.prototype.constructor = Child;
2、借用构造函数继承:通过在子类的构造函数中调用父类的构造函数来实现继承。这种方式的优点是子类可以访问父类的私有属性和方法,缺点是每个子类实例都会有一份父类实例的拷贝。
function Parent() {this.name = 'parent';this.age = 30;
}
Parent.prototype.sayName = function() {console.log(this.name);
}function Child() {Parent.call(this);
}
3、组合继承:通过结合原型链继承和借用构造函数继承的优点来实现继承。这种方式的优点是既可以访问父类的私有属性和方法,又可以避免每个子类实例都有一份父类实例的拷贝。
function Parent() {this.name = 'parent';this.age = 30;
}
Parent.prototype.sayName = function() {console.log(this.name);
}function Child() {Parent.call(this);
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
4、ES6 Class继承:通过使用ES6 class语法来实现继承。
class Parent {constructor() {this.name = 'parent';this.age = 30;}sayName() {console.log(this.name);}
}class Child extends Parent {constructor() {super();}
}
JavaScript 中的继承可以通过多种方式来实现,如原型链继承、借用构造函数继承、组合继承、ES6 Class继承等。每种方式都有各自的优缺点,需要根据具体需求来选择使用。
另外,对于JavaScript中的继承,还有一些需要注意的点:
- 在原型链继承和组合继承中,子类的原型对象会继承父类的原型对象,这意味着子类和父类共享同一个原型对象,如果父类原型对象上的属性和方法发生改变,子类也会受到影响。
- 在借用构造函数继承和组合继承中,子类的实例会有一份父类实例的拷贝,这意味着每个子类实例都有自己的父类实例,不会受到其他实例的影响。
- 在ES6 Class继承中,父类的静态方法和属性会被继承到子类,子类的实例也会继承父类的实例方法和属性。
选择合适的继承方式和组合使用,可以帮助我们更好的组织代码,提高代码的可维护性。
相关文章:
JavaScript里实现继承的几种方式
JavaScript 中的继承可以通过以下几种方式来实现: 1、原型链继承:通过将子类的原型对象指向父类的实例来实现继承。这种方式的优点是实现简单,缺点是父类的私有属性和方法子类是不能访问的。 function Parent() {this.name parent;this.ag…...
前端:运用HTML+CSS+JavaScript实现迷宫游戏
最近感到挺无聊的,于是想到了大学期间关于栈的应用知识,于是就写了这篇博客! 运用HTML+CSS+JavaScript实现迷宫游戏 1. 运行结果2. 实现思路3. 参考代码1. 运行结果 前端:做个迷宫玩玩,不会迷路吧! 2. 实现思路 如果有一个迷宫,有入口,也有出口,那么怎样找到从入口到出…...
NoSQL数据库简介
NoSQL代表“不仅是SQL”,指的是一种数据库管理系统,旨在处理大量非结构化和半结构化数据。与使用具有预定义架构的表格格式的传统SQL数据库不同,NoSQL数据库是无模式的,并且允许灵活和动态的数据结构。 NoSQL数据库是必需的&…...
面试马铭泽
为什么报考这个岗位 首先,我对军人从小有崇敬之情,梦想着穿着庄严的军装,更对祖国有强烈的热爱之心。我的大舅是一名现役军人,老舅也曾服过兵役,从他们的谈吐以及教育中,让我对部队一直充满向往之情&#…...
查看AWS S3的目录
要查看AWS S3存储桶(Bucket)的目录,您可以通过AWS管理控制台或AWS CLI(命令行界面)来实现。 在AWS管理控制台中查看: 登录AWS管理控制台。选择S3服务。在S3存储桶列表中选择要查看的存储桶。在对象列表中…...
分布式系统概念和设计-操作系统中的支持和设计
分布式系统概念和设计 操作系统支持 中间件和底层操作系统的关系,操作系统如何满足中间件需求。 中间件需求:访问物理资源的效率和健壮性,多种资源管理策略的灵活性。 任何一个操作系统的目标都是提供一个在物理层(处理器,内存&a…...
【redis】bitmap、hyperloglog、GEO案例
【redis】bitmap、hyperloglog、GEO案例 文章目录 【redis】bitmap、hyperloglog、GEO案例前言一、面试题二、统计的类型聚合统计排序统计问题:思路 二值统计 0和1基数统计 三、hyperloglog1、名词理解UV 独立访客PV 页面浏览量DAU 日活跃用户MAU 月活跃度 2、看需求…...
第二章:集合与区间
1.集合 1.内容概述 1.了解集合的意义2.了解常见集合符号的含义3.云用常见的集合符号来表示集合之间的关系、元素与集合之间的关系2.基本概念 1.集合:把一些确定的对象看成一个整体就形成了一个集合。集合一般使用大写字母A、B、C…来表示2.元素:集合中每一个对象叫做这个集合…...
Mysql8.0版本安装
一,使用yum方式安装 1,配置mysql安装源: sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm2,安装mysql8.0: sudo yum --enablerepo=mysql80-community inst...
开放式耳机真的比封闭式强很多吗?推荐几款主流的开放式耳机
开放式耳机,顾名思义,就是通过骨头振动来传导声音的耳机。相比于传统耳机,它的声音传输更加开放,不会对耳膜造成压迫感,也不会对耳膜旁的内毛细胞造成损害。因此开放式耳机既是运动蓝牙耳机,又是音乐蓝牙…...
Doris(7):数据导入(Load)之Routine Load
例行导入功能为用户提供了义中自动从指定数据源进行数据导入的功能 1 适用场景 当前仅支持kafka系统进行例行导入。 2 使用限制 支持无认证的 Kafka 访问,以及通过 SSL 方式认证的 Kafka 集群。支持的消息格式为 csv 文本格式。每一个 message 为一行,…...
linux 安装php8.1 ZipArchive和libzip最新版扩展安装
1、概述 安装前咱们先看下我本地环境 [rootelk php8]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo) [rootelk php8]# [rootelk php8]# ./bin/php -v PHP 8.1.18 (cli) (built: Apr 17 2023 13:15:17) (NTS) Copyright (c) The PHP Group Z…...
大数据 | 实验一:大数据系统基本实验 | 熟悉常用的HBase操作
文章目录 📚HBase安装🐇安装HBase🐇伪分布式模式配置🐇测试运行HBase🐇HBase java API编程环境配置 📚实验目的📚实验平台📚实验内容🐇HBase Shell 编程命令实现以下指定…...
Linux command(split)
原理 在split.c中,首先处理传递给split命令的参数,包括需要拆分的文件、拆分大小/行数等选项。然后,通过调用open()函数打开需要拆分的文件,并获取文件信息。接着根据选项计算每个拆分文件的大小/行数,并根据需要创建输…...
开放式耳机好用吗,盘点几款口碑不错的开放式耳机
开放式耳机作为一种全新的耳机形态,已经成为了当前市场上非常火爆的一款产品。由于无需入耳佩戴,可以很好的避免了耳膜受到损伤,而且也能够让我们在佩戴眼镜时也能够正常使用。加上开放式耳机的音质和舒适度都要优于其他类型的耳机…...
法规标准-ISO 16787标准解读
ISO 16787是做什么的? ISO 16787全称为智能运输系统-辅助泊车系统(APS)-性能要求和测试程序,其中主要描述了对APS系统的功能要求及测试规范 APS类型 根据目标停车位类型将APS系统分为两类: 1)APS类型I&a…...
脑力劳动-英文单词
标题 前言必学场景词汇及用法会议简报电话出差市场调研广告与媒介电脑情境常用单词会议简报电话市场调研广告与媒介电脑前言 加油 必学场景词汇及用法 会议 1meeting [ˈmitɪŋ] n.会议hold / have / call off a meeting举办/取消会议be in a meeting在开会The meeting w…...
机器学习中的三个重要环节:训练、验证、测试
本文重点 模型训练、验证和测试是机器学习中的三个重要环节。这三个环节之间存在着紧密的关系,它们相互作用,共同构建出一个完整的机器学习模型。在本文中,我们将详细介绍模型训练、验证和测试之间的关系。 模型训练、验证和测试之间的关系 模型训练是机器学习中最基本的…...
机器学习实战:Python基于LDA线性判别模型进行分类预测(五)
文章目录 1 前言1.1 线性判别模型的介绍1.2 线性判别模型的应用 2 demo数据演示2.1 导入函数2.2 训练模型2.3 预测模型 3 LDA手写数字数据演示3.1 导入函数3.2 导入数据3.3 输出图像3.4 建立模型3.5 预测模型 4 讨论 1 前言 1.1 线性判别模型的介绍 线性判别模型(…...
Java枚举(Enum)
枚举(enum) enum全称enumeration,JDK 1.5中引入的新特性。在Java中,被enum关键字修饰的类型就是枚举类型 可以将枚举看成一个类,它继承于java.lang.enum类,当定义一个枚举类型时,每一个枚举类型…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
