当前位置: 首页 > news >正文

JS实现继承的方式ES6版

上一篇:JS实现继承的方式原生版

ES6的继承

主要是依赖extends关键字来实现继承,且继承的效果类似于寄生组合继承。

class Parent() {
}class Child extends Parent {constructor(x, y, color) {super(x, y);this.color = color;}
}

子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,加上子类自己的实例属性和方法。如果不调用super方法,子类就得不到this对象。

class Parent {constructor() {}
}
​
class Child extends Parent {constructor() {this.num = 10//报错super()this.num = 10//正确写法}}

没有 constructor 会被默认添加,相当于 constructor(…args) { super(…args) }

super

super的使用方式:
1、当函数使用。作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。
super虽然代表了父类A的构造函数,但是返回的是子类B的实例,即super内部的this指的是B的实例,因此super()在这里相当于A.prototype.constructor.call(this)。
作为函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错。

2、当对象使用。在普通方法中,指向父类的原型对象A.prototype;在静态方法中,指向父类。

// 当函数使用
class A {}class B extends A {constructor() {super();}
}// 当对象使用,当对象使用时,相当于引用A原型上的方法。
class A {p() {return 2;}
}class B extends A {constructor() {super();console.log(super.p()); // 2}
}let b = new B();

prototype和__proto__

类中:
子类的__proto__指向父类
子类prototype属性的__proto__指向父类的prototype属性

class A {
}class B extends A {
}B.__proto__ === A    // true
B.prototype.__proto__ === A.prototype  // true

实例中:
子类实例的__proto__的__proto__指向父类的__proto__。也就说子类实例的原型的原型指向父类实例的原型

class A {
}class B extends A {
}const a = new A();
const b = new B();b.__proto__.__proto__ === a.__proto__  // true

相关文章:

JS实现继承的方式ES6版

上一篇:JS实现继承的方式原生版 ES6的继承 主要是依赖extends关键字来实现继承,且继承的效果类似于寄生组合继承。 class Parent() { }class Child extends Parent {constructor(x, y, color) {super(x, y);this.color color;} }子类必须在construct…...

elementui 左侧或水平导航菜单栏与main区域联动

系列文章目录 一、elementui 导航菜单栏和Breadcrumb 面包屑关联 二、elementui 左侧导航菜单栏与main区域联动 三、elementui 中设置图片的高度并支持PC和手机自适应 四、elementui 实现一个固定位置的Pagination(分页)组件 文章目录 系列文章目录…...

YUNBEE云贝-技术分享:PostgreSQL分区表

引言 PostgreSQL作为一款高度可扩展的企业级关系型数据库管理系统,其内置的分区表功能在处理大规模数据场景中扮演着重要角色。本文将深入探讨PostgreSQL分区表的实现逻辑、详细实验过程,并辅以分区表相关的视图查询、分区表维护及优化案例,…...

5.2 通用代码,数组求和,拷贝数组,si配合di翻转数组

5.2 通用代码,数组求和,拷贝数组,si配合di翻转数组 1. 通用代码 通用代码类似于一个用汇编语言写程序的一个框架,也类似于c语言的头文件编写 assume cs:code,ds:data,ss:stack data segmentdata endsstack segmentstack endsco…...

Oracle23免费版简易安装攻略

installation-guide 1 安装 root用户下 wget https://yum.oracle.com/repo/OracleLinux/OL8/developer/x86_64/getPackage/oracle-database-preinstall-23c-1.0-1.el8.x86_64.rpm wget https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23c-1…...

《论文阅读》一种基于反事实推理的会话情绪检测无训练去偏框架 EMNLP 2023

《论文阅读》一种基于反事实推理的会话情绪检测无训练去偏框架 EMNLP 2023 前言简介相关工作模型构架Basic ClassificationBias ExtractionUnbiased Inference实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天…...

基于springboot+vue的健身房管理预约管理系统

...

【编译lombok问题】已解决:编译突然找不到符号问题-get/set找不到符号

一、场景:编译突然找不到符号 报错信息: 找不到符号 符号:方法getName() 二、原因: 没有使用lombok支持的编译器 三、解决方法: 打开File-Settings,按以下步骤进行设置; 修改:-Djp…...

第四篇:3.3 无效流量(Invalid traffic) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇广…...

PyTorch示例——使用Transformer写古诗

文章目录 PyTorch示例——使用Transformer写古诗1. 前言2. 版本信息3. 导包4. 数据与预处理数据下载先看一下原始数据开始处理数据,过滤掉异常数据定义 词典编码器 Tokenizer定义数据集类 MyDataset测试一下MyDataset、Tokenizer、DataLoader 5. 构建模型位置编码器…...

vue 视频添加水印

1.需求背景 其实腾讯云点播的api也支持视频水印,但是只有单个水印,大概效果是这样子的,不满足我们的需求,我们的需求是需要视频中都是水印。 腾讯云点播水印 项目需求的水印(主要是防录屏,最后的实现效果是这样&…...

Web Animations API 动画

Element.animate() dom.animate动画可以避免污染dom原有的css动画 参考资料 Element.animate() - Web API 接口参考 | MDN Element: getAnimations() method - Web APIs | MDN .tunnel{width:200px;height:200px;background-color:#38f;}<div class"tunnel" …...

【大数据存储】实验五:Mapreduce

实验Mapreduce实例——排序&#xff08;补充程序&#xff09; 实验环境 Linux Ubuntu 16.04 jdk-8u191-linux-x64 hadoop-3.0.0 hadoop-eclipse-plugin-2.7.3.jar eclipse-java-juno-SR2-linux-gtk-x86_64 实验内容 在电商网站上&#xff0c;当我们进入某电商页面里浏览…...

日志服务 HarmonyOS NEXT 日志采集最佳实践

作者&#xff1a;高玉龙&#xff08;元泊&#xff09; 背景信息 随着数字化新时代的全面展开以及 5G 与物联网&#xff08;IoT&#xff09;技术的迅速普及&#xff0c;操作系统正面临前所未有的变革需求。在这个背景下&#xff0c;华为公司自主研发的鸿蒙操作系统&#xff08…...

Educational Codeforces Round 133 (Rated for Div. 2) (C dp D前缀和优化倍数关系dp)

A&#xff1a;能用3肯定用三&#xff0c;然后分类讨论即可 #include<bits/stdc.h> using namespace std; const int N 2e510,M2*N,mod998244353; #define int long long typedef long long LL; typedef pair<int, int> PII; typedef unsigned long long ULL; usi…...

【讲解下如何Stable Diffusion本地部署】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

wps斜线表头并分别打字教程

wps斜线表头怎么做并分别打字&#xff1a; 1、首先选中我们想要设置的表头。 2、接着右键选中它&#xff0c;点击“设置单元格格式” 3、然后点击上方“边框”选项卡。 4、随后选择图示的斜线&#xff0c;点击“确定” 5、设置完成后&#xff0c;我们只要在其中打字就可以在斜…...

2024第八届全国青少年无人机大赛暨中国航空航天科普展览会

2024第八届全国青少年无人机大赛暨中国航空航天科普展览会 邀请函 主办单位&#xff1a; 中国航空学会 重庆市南岸区人民政府 招商执行单位&#xff1a; 重庆港华展览有限公司 为更好的培养空航天产业人才&#xff0c;汇聚航空教育产业创新科技&#xff0c;丰富和完善航…...

fastadmin学习08-查询数据渲染到前端

index.php查询&#xff0c;这个是前台的index.php public function index() {$slideImgs Db::name("slideimg")->where("status",,normal)->limit(5)->order(sort,desc)->select();$productList Db::name("product")->where(…...

实验报告答案

基本任务&#xff08;必做&#xff09; 先用普通用户&#xff08;自己的姓名拼音&#xff09;登录再操作 编程有代码截图和执行过程结果截图 代写获取&#xff1a; https://laowangall.oss-cn-beijing.aliyuncs.com/studentall.pdf 1. Linux的Shell编程 &#xff08;1&am…...

Vivado 2023.1 与 Questasim 2024.1 协同仿真环境搭建全攻略

1. 环境准备&#xff1a;安装与版本确认 在开始搭建Vivado 2023.1与QuestaSim 2024.1的协同仿真环境前&#xff0c;首先要确保两个软件都已正确安装。我最近在搭建这个环境时发现&#xff0c;新版本对系统环境的要求比旧版本更严格。建议使用Windows 10 64位专业版或企业版&…...

InvestorFinder 技术架构深度解析:VC 合伙人真实投资行为数据挖掘与精准匹配底层实现

摘要在一级市场股权投资领域&#xff0c;创业者与风险投资机构合伙人的精准匹配长期存在信息壁垒、数据碎片化、背景信息不对称三大核心痛点。传统投融资对接模式依赖 FA 机构人脉、线下路演、投融资社群人工对接&#xff0c;存在效率低下、匹配维度单一、投资人真实投资行为数…...

别再折腾路由器了!用Go语言给阿里云/腾讯云域名写个DDNS服务(附完整代码)

用Go语言打造高可靠DDNS服务&#xff1a;从阿里云到腾讯云的完整实践 每次重启光猫后&#xff0c;公网IP地址就像捉迷藏一样消失不见——这种烦恼对于需要远程访问家庭NAS或自建服务器的技术爱好者来说再熟悉不过了。市面上的第三方DDNS工具要么功能臃肿&#xff0c;要么存在隐…...

程序员裸辞转行网络安全,我只用了 90 天

程序员如何90天成功转行黑客&#xff08;网络安全&#xff09;&#xff1f; 有人说&#xff1a;”黑客到底比程序员高在哪&#xff0c;为什么很多人开始转行了“其实黑客都是程序员&#xff0c;但是并不是所有的程序员都是黑客. 从企业和社会需求来看&#xff0c;现在真不缺程…...

Keil5 UV4目录下的global.prop文件,除了改黑色背景还能玩出什么花样?

Keil5 UV4目录下的global.prop文件&#xff1a;从黑色主题到深度定制指南 如果你已经厌倦了Keil5默认的白色界面&#xff0c;或者对网上流传的"黑色背景修改教程"感到意犹未尽&#xff0c;那么这篇文章将带你深入探索global.prop这个配置文件的无限可能。作为Keil μ…...

Windows 11终极清理指南:用Win11Debloat智能优化系统性能

Windows 11终极清理指南&#xff1a;用Win11Debloat智能优化系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…...

3个步骤解决经典游戏无法联网:IPXWrapper终极兼容方案

3个步骤解决经典游戏无法联网&#xff1a;IPXWrapper终极兼容方案 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 你是否曾在Windows 10或11系统上试图重温《红色警戒2》、《帝国时代》或《星际争霸》的局域网对战&#xff0c;却…...

iOS 27 开放 AI 生态@ACP#专业视频处理新标杆 ——GSV9001E/S 赋能 iPhone AI 多屏智能显示

一、iOS 27 开放 AI&#xff1a;引爆专业视频处理与多屏显示刚需iOS 27 全面开放第三方 AI 模型&#xff0c;iPhone 成为 AI 内容生成、多源信号整合、智能交互核心&#xff0c;直接催生AI 多屏拼接、无缝切换、画中画、HDR/SDR 转换、车载 / 工控多视图、医疗 AI 显示六大专业…...

从蛋白质分类到社交网络:Graph Pooling在实际项目里到底怎么用?

从蛋白质分类到社交网络&#xff1a;Graph Pooling实战选型指南 在生物信息实验室里&#xff0c;研究员小李正盯着屏幕上错综复杂的蛋白质相互作用网络发愁——如何将这个包含数千个原子的三维结构转化为机器学习模型可处理的表征&#xff1f;与此同时&#xff0c;某社交平台算…...

智算解构像素 实景生长孪生:摒弃人工建模冗余流程,开辟视频孪生快速规模化落地路径

智算解构像素 实景生长孪生副标题&#xff1a;摒弃人工建模冗余流程&#xff0c;开辟视频孪生快速规模化落地路径前言传统数字孪生落地始终深陷人工建模周期长、成本高、流程冗余、更新滞后的固化瓶颈。依赖外业测绘、人工描模、素材拼接、后期修模&#xff0c;环节繁琐、交付周…...