【JS进阶】ES6 实现继承的方式
ES6 实现继承的方式
基本语法
class Parent {constructor(name) {this.name = name;this.colors = ['red', 'blue'];}sayName() {console.log(this.name);}
}class Child extends Parent {constructor(name, age) {super(name); // 必须调用super(),且在使用this之前this.age = age;}sayAge() {console.log(this.age);}
}const child1 = new Child('Tom', 10);
child1.sayName(); // "Tom"
child1.sayAge(); // 10
child1.colors.push('green');
console.log(child1.colors); // ['red', 'blue', 'green']const child2 = new Child('Jerry', 8);
console.log(child2.colors); // ['red', 'blue'] (不共享引用属性)
关键点说明
extends
关键字:用于声明类继承关系super
关键字:- 在构造函数中:
super()
调用父类构造函数,必须在访问this
之前调用 - 在方法中:
super.method()
可以调用父类方法
- 在构造函数中:
- 静态方法继承:子类会继承父类的静态方法
- 原型方法继承:子类实例可以调用父类原型方法
与 ES5 继承的对比
特性 | ES5 继承 | ES6 class 继承 |
---|---|---|
语法 | 复杂,需要手动处理原型链 | 简洁,使用 class 和 extends |
构造函数调用 | 需要手动调用父类构造函数 | 通过 super() 自动处理 |
静态方法继承 | 需要额外处理 | 自动继承 |
原型方法 | 需要手动设置原型链 | 自动继承 |
内置类继承 | 难以实现 | 可以继承内置类如 Array, Error 等 |
注意事项
- 必须调用
super()
:在子类构造函数中,必须先调用super()
才能使用this
super
的不同用法:class Child extends Parent {constructor() {super(); // 调用父类构造函数}method() {super.parentMethod(); // 调用父类方法} }
- 可以继承内置类型:
class MyArray extends Array {// 可以扩展内置Array的功能 }
new.target
:可以检测是通过哪个类被实例化的
底层实现
ES6 的 class
继承本质上是 ES5 寄生组合式继承的语法糖,Babel 转译后的代码类似于:
function _inherits(subClass, superClass) {subClass.prototype = Object.create(superClass.prototype);subClass.prototype.constructor = subClass;subClass.__proto__ = superClass;
}// 然后实现类似的继承逻辑
相关文章:
【JS进阶】ES6 实现继承的方式
ES6 实现继承的方式 基本语法 class Parent {constructor(name) {this.name name;this.colors [red, blue];}sayName() {console.log(this.name);} }class Child extends Parent {constructor(name, age) {super(name); // 必须调用super(),且在使用this之前thi…...
mac 电脑Pycharm ImportError: No module named pip
这个错误表明 PyCharm 在尝试使用 pip 时找不到该模块,通常是由于 Python 环境中的 pip 未正确安装或损坏引起的。以下是针对 Mac 系统的完整解决方案: 解决方案步骤: 检查终端中的 pip 状态 打开终端(Terminal),执行以下命令: bash python3 -m ensurepip --upgrade pi…...

C#入门学习笔记 #8(委托)
欢迎进入这篇文章,文章内容为学习C#过程中做的笔记,可能有些内容的逻辑衔接不是很连贯,但还是决定分享出来,由衷的希望可以帮助到你。 笔记内容会持续更新~~ 本章介绍C#中的委托,本章难度较大... 委托 C#中的委托是C语言、C++中函数指针的升级版。接下来介绍一个概念—…...

CSS 3D 变换中z-index失效问题
CSS 3D 变换中 z-index 失效问题 1. z-index 失效了 在 CSS 中,z-index 通常用于控制元素的层叠顺序,数值越大,元素越靠前显示。在 3D 变换(如 rotateX、translateZ) 中使用 z-index 时,可能会发现z-inde…...
Vue3 中使用 i18n
Vue3 中使用i18n 在 Vue 3 中使用国际化(i18n)可以通过官方的 vue-i18n 库来实现。vue-i18n 是专门为 Vue 应用设计的国际化解决方案,支持多语言切换、动态内容插值等功能。 以下是如何在 Vue 3 中使用 vue-i18n 的详细步骤: 1.…...
vue:当前对象添加对应值
this.$set(this.dynamicValidateForm.domains[index], // 目标对象item.roundProperty, // 要添加的属性名row[item.roundProperty] ? row[item.roundProperty].split(",") : [] // 属性值 ); 说明: 第一个参数:th…...

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
Tailwind CSS 实战,基于Kooboo构建AI对话框页面(一) Tailwind CSS 实战,基于Kooboo构建AI对话框页面(二):实现交互功能 Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面&#x…...
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
一、解释 JavaScript 作为当今最流行的编程语言之一,广泛应用于 Web 开发、移动端开发、后端开发等多个领域。然而,许多开发者在使用 JavaScript 时,往往只关注其表面的语法和 API,而对其底层原理和核心机制了解甚少。深入理解 J…...

【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、 &…...

基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离&a…...

【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘
摘要 频域图像处理通过傅里叶变换将图像从空间域转换到频率域,为图像增强、去噪、压缩等任务提供全新视角。本文将深入解析傅里叶变换原理,介绍低通、高通滤波的实现方式,结合OpenCV和Python代码展示频域滤波在去除噪声、增强边缘中的应用,帮助读者掌握图像频域处理的核心…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
摘要:本文聚焦于生态农庄运营中的游客留存问题,以村长与乡亲们吸引游客进村为背景,深入探讨如何借助开源AI智能名片链动2 1模式S2B2C商城小程序实现游客的有效留存。通过分析该小程序在信息传递、服务整合、营销激励等方面的优势,…...

Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)
Jenkins实现自动化部署Springboot项目到Docker容器 引言:为什么需要自动化部署? 在软件开发中,频繁的手动部署既耗时又容易出错。通过 Docker + Jenkins + Git 的组合,您可以实现: ✅ 一键部署:代码推送后自动构建和部署🐳 环境一致性:Docker 确保开发、测试、生产环…...

【Linux】Git原理与使用
编程不仅是解决问题的艺术,更是对复杂性进行优雅管理的哲学。 前言 这是我自己学习Linux系统编程的第三篇笔记。后期我会继续把Linux系统编程笔记开源至博客上。 上一期笔记是关于Vim文本编辑器知识: 【Linux】Vim文本编辑器-CSDN博客https://blog.csdn…...
Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束前言项目简介技术栈…...

A*算法实现原理以及实现步骤(C++)
算法原理: A*算法是一种启发式搜索算法,用于在图中寻找最短路径。它结合了Dijkstra算法的确保最短路径的优点和贪心最佳优先搜索的高效性。其核心在于使用一个评估函数: f(n) g(n) h(n) 其中: - g(n) 表示从起点到节点n的实际代…...

Devops自动化运维---py基础篇一
python基础篇 1、基本数据类型 2、算术运算符 3、变量 变量:编程语言中能储存结果或能表示值的抽象概念 用途:用一段数据赋予一个简短、易于记忆的名字,方便重复使用3.1 格式转化变量 操作符号描述%s字符串%d整数%f浮点数 实例࿱…...

平安养老险蚌埠中心支公司开展金融宣教活动
近日,平安养老保险股份有限公司(以下简称“平安养老险”)蚌埠中心支公司,走进某合作企业开展金融教育宣传活动。 活动现场,平安养老险蚌埠中心支公司工作人员通过发放宣传手册和小礼品等方式,向企业员工普…...
游戏设计模式 - 子类沙箱
核心思想 子类沙箱模式(Subclass Sandbox)通过将核心逻辑封装在基类中,为子类提供安全的"沙箱"环境。子类通过组合或重写基类提供的预定义操作来实现行为,而非直接操作底层系统。 这种模式在游戏开发中常用于实现角色…...
java-springboot文件上传校验之只允许上传excel文件,且检查不能是脚本或者有害文件或可行性文件
四重验证机制: 文件扩展名检查(.xlsx/.xls)MIME类型检查文件魔数验证(真实文件类型)可执行文件特征检测 防御措施: 使用try-with-resources确保流关闭限制文件大小防止DoS攻击使用Apache POI的FileMagic进…...
openvino如何在c++中调用pytorch训练的模型
步骤1:将PyTorch模型转换为ONNX格式 转换代码示例(Python) import torch import torchvision1. 加载训练好的PyTorch模型 model torchvision.models.resnet18(pretrainedTrue) model.eval() # 设置为评估模式2. 创建虚拟输入(…...

Redisson简明教程—你家的锁芯该换了
1.简介 各位攻城狮们,你还在使用原生命令来上锁么?看来你还是不够懒,饺子都给你包好了,你非要吃大饼配炒韭菜,快点改善一下“伙食”吧,写代码也要来点幸福感。今天咱们就来聊聊Redisson提供的各种锁&#…...

48V带极性反接保护-差共模浪涌防护方案
在工业自动化(电动机驱动 / 工业机器人)、交通基础设施(充电桩 / 车载电子)、安防系统(监控摄像头 / 门禁)、储能设备(BMS / 离网控制器)等领域,DC48V 电源因安全特低电压…...

Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)
一、线程安全推理 在多线程环境中运行YOLO 模型需要仔细考虑,以确保线程安全。Pythons threading 模块允许您同时运行多个线程,但在这些线程中使用YOLO 模型时,需要注意一些重要的安全问题。本页将指导您创建线程安全的YOLO 模型推理。 1.1、…...

jvm学习第1day jvm简介,栈溢出、堆溢出
jvm学习第1day jvm简介,栈溢出、堆溢出 jvm简介栈线程安全栈溢出线程运行诊断堆堆溢出 方法区方法区内存溢出常量池和运行时常量池 jvm简介 jvm 是编译后的字节码文件运行的环境, 因此各个平台有了jvm可以运行java.class文件,这是Java跨平台…...

用广告维持的免费 AI 图像生成工具(个人项目分享)
用广告维持的免费 AI 图像生成工具(个人项目分享) 免费 AI 图像生成工具网址:https://aiart.gcc.ac.cn/ 最近做了一个 AI 图像生成器,主要目标是“尽量简单”: 打开网页就能用不用注册、不用登录免费,不…...

分析Web3下数据保护的创新模式
在这个信息爆炸的时代,我们正站在 Web3 的门槛上,迎接一个以去中心化、用户主权和数据隐私为核心的新时代。Web3 不仅仅是技术的迭代,它更是一场关于数据权利和责任的结构性变革。本文将探讨 Web3 下数据保护的创新模式,以期为用户…...

减少交通拥堵、提高效率、改善交通安全的智慧交通开源了。
智慧交通视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上…...

协议融合驱动效能跃升:Modbus转Ethernet IP的挤出吹塑机应用
在现代工业自动化领域,Modbus作为一种串行通信协议,其稳定性和简单性被广泛应用于各种工控设备中。但随着技术的进步,对于更高速、更远传输距离的需求日益增长,这就需要将Modbus协议通过以太网进行传输,即实现Modbus T…...
Hive的TextFile格式优化方法
Hive的TextFile格式是一种简单的行式存储格式,数据以文本行形式存储,每行包含多个字段,字段间通过分隔符(如逗号、制表符)分隔。尽管TextFile在性能上不如ORC、Parquet等列式存储格式,但在特定场景下仍有其优势。以下是TextFile格式的特点、优势、使用场景及优化方法: …...