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

实现寄生组合继承

寄生组合继承是一种继承方式,它通过组合使用构造函数继承和原型继承的方式,实现了高效而且正确的继承方式。

具体实现步骤如下:

① 定义一个父类,实现其属性和方法:

    function Person(name) {this.name = namethis.age = 18}Person.prototype.sayName = function() {console.log(this.name)}

② 定义一个子类,通过调用父类构造函数,实现属性的继承:

    function Child(name, age) {// 调用父类的构造函数// 这里使用了构造函数继承实现了属性的继承Person.call(this, name)this.age = age}

③ 将子类的原型指向一个父类的实例,实现方法的继承并避免父类构造函数被调用多次

    // Object.create(proto, prop) 创建一个新对象,指定新对象的原型对象// proto:新创建对象的原型对象// prop:可选,设置属性及属性描述,默认值:undefined。Child.prototype = Object.create(Person.prototype)Child.prototype.constructor = Child

④ 在子类的原型上添加子类自己的方法

    // 在子类的原型上添加子类自己的方法Child.prototype.sayAge = function() {console.log(this.age)}

完整代码:

    // 定义一个父类,实现其属性和方法function Person(name) {this.name = namethis.age = 18}Person.prototype.sayName = function() {console.log(this.name)}// 定义一个子类,通过调用父类构造函数,实现属性的继承function Child(name, age) {// 调用父类的构造函数// 这里使用了构造函数继承实现了属性的继承Person.call(this, name)this.age = age}// 将子类的原型指向一个父类的实例,实现方法的继承并避免父类构造函数被调用多次// Object.create(proto, prop) 创建一个新对象,指定新对象的原型对象// proto:新创建对象的原型对象// prop:可选,设置属性及属性描述,默认值:undefined。Child.prototype = Object.create(Person.prototype)Child.prototype.constructor = Child// 在子类的原型上添加子类自己的方法Child.prototype.sayAge = function() {console.log(this.age)}

实践:

    const child1 = new Child('小草莓', 6)console.log(child1)child1.sayName()child1.sayAge()

相关文章:

实现寄生组合继承

寄生组合继承是一种继承方式,它通过组合使用构造函数继承和原型继承的方式,实现了高效而且正确的继承方式。 具体实现步骤如下: ① 定义一个父类,实现其属性和方法: function Person(name) {this.name namethis.age…...

ARM 账号注册报错 The claims exchange ‘Salesforce-UserWriteUsingEmail‘

ARM 账号注册报错 The claims exchange ‘Salesforce-UserWriteUsingEmail’ 参考:ARM 账号注册报错 The claims exchange ‘Salesforce-UserWriteUsingEmail’ specified in step ‘14’ returned HTTP error response with Code ‘BadRequest’ and Reason ‘Bad …...

笔记:电子设备接地,接的到底是什么地?

电路中有“地”,设备中有“地”;都是“地”,此地非彼地。 混淆的原因 有些混淆,是以为中文翻译造成的,英文所有Ground都统一翻译为“地”; 例1:英文Circuit Ground,应该翻译为电路…...

PY32F002A系列单片机:高性价比、低功耗,满足多样化应用需求

PY32F002A系列微控制器是一款高性能、低功耗的MCU,它采用32位ARM Cortex-M0内核,最高工作频率达到24MHz,提供了强大的计算能力。此外,PY32F002A拥有最大20Kbytes的flash存储器和3Kbytes的SRAM,为简单的数据处理提供了充…...

头歌的数据库的第三次作业的答案

目录 MySQL-安全性控制 第1关:用户和权限 第2关:用户、角色与权限 MySQL-触发器 第1关:为投资表property实现业务约束规则-根据投资类别分别引用不同表的主码 MySQL-数据的插入、修改与删除(Insert,Update,Delete) 第1关:插…...

前端3D规划

学习基础的3D概念:这包括向量、矩阵、几何、光照和材质等基本3D图形学的概念。这些是理解和使用3D技术的基础。学习WebGL:WebGL是一种在浏览器中实现3D图形的技术,它是OpenGL的Web版本,可以直接在浏览器中使用。学习WebGL可以帮助…...

appium操控微信小程序的坑

appium操控微信小程序的坑 打不开启动页面driver的context只有NATIVE_APP小程序上元素找不到 我打算使用appium操控微信小程序,只要能够获取到小程序的页面元素就算成功。下面都是我遇到的问题。 打不开启动页面 以下是我的appium的配置参数和代码: de…...

6 个最佳 Windows 免费磁盘分区管理器

几乎所有新的笔记本电脑和 PC 都只有一个分区 C:\,与安装了 Windows 的分区相同。不太精通技术的用户开始按照计算机呈现给他们的方式使用计算机;他们将所有文档、个人文件(例如图片、歌曲、电影等)放在同一个分区上。整个驱动器上…...

【Leetcode】【每日一题】【简单】2558. 从数量最多的堆取走礼物

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/take-gifts-from-the-richest-pi…...

LeetCode 每日一题 2023/10/23-2023/10/29

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 10/23 2678. 老人的数目10/24 1155. 掷骰子等于目标和的方法数10/25 2698. 求一个整数的惩罚数10/26 2520. 统计能整除数字的位数10/27 1465. 切割后面积最大的蛋糕10/28 2…...

Android:Installed Build Tools revision 33.0.2 is corrupted.

Remove and install again using the SDK Manager. 使用33.0.2及以上版本的build-tools编译Android应用时。 有些人会按照提示去SDK Manager中重新安装build tools,然后发现这样做是无用的 编译时会收到:Build-tool 33.0.2 is missing DX at D:\Sdk\b…...

语法复习之C语言与指针

内存是如何存储数据的? 在C语言中定义一个变量后,系统就会为其分配内存空间。这个内存空间包括了地址和长度。将变量赋值后,该值就被写入到了指定的内存空间中。内存空间的大小一般以字节作为基本单位。   普通变量存放的是数据&#xff0c…...

vue笔记(二)

7、事件处理 7.1、事件的基本处理 事件的使用 使用v-on&#xff1a;xxx或者用xxx绑定事件&#xff0c;其中XXX是事件名事件的回调需要配置在methods对象中&#xff0c;最终出现在VM上methods配置的函数&#xff0c;不需要箭头函数 <div id"root"><h1>…...

【IT行业就业前景广阔:探讨热门方向与就业机会】

IT行业哪个方向比较好就业? IT行业是一个快速发展的领域&#xff0c;与许多其他行业紧密结合&#xff0c;为各个行业带来了巨大的变革和机遇。在这个充满活力的行业中&#xff0c;有许多就业方向可以选择。让我们一起来探讨一下IT行业的发展背景、就业方向以及分享一些就业经…...

linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法

linux上java -jar方式运行项目及输出文件nohup.out的清理&#xff0c; linux上定时器的用法 linux上java -jar方式运行定期自动清理nohup.out文件的内容**验证**定时器crontab使用时注意事项 linux上java -jar方式运行 参考&#xff1a;https://blog.csdn.net/qq_42169450/arti…...

macOS 12 Monterey v12.7.1正式版:开启全新的操作系统体验

macOS 12 Monterey已经向所有兼容的Mac设备推出&#xff0c;为您带来了一系列强大的新功能和改进。这个全新的操作系统版本&#xff0c;不仅带来了更流畅的用户体验&#xff0c;还增强了与iOS设备的无缝集成&#xff0c;让您的设备使用更加高效&#xff0c;更加便捷。 macOS 1…...

vue制作防止用户未登录或未填写信息就跳转页面的路由拦截器

在Vue中&#xff0c;你可以使用路由导航守卫来实现防止未登录用户跳转页面的路由拦截器。 首先&#xff0c;你需要创建一个全局前置守卫&#xff0c;用于检查用户是否已登录。在router/index.js文件中&#xff0c;添加如下代码&#xff1a; import router from /router;route…...

postgis ST_CoverageInvalidEdges用法

官方文档 概要 geometry ST_CoverageInvalidEdges(geometry winset geom, float8 tolerance 0); 描述 一个窗口函数&#xff0c;用于检查窗口分区中的多边形是否形成有效的多边形覆盖范围。 它返回线性指示器&#xff0c;显示每个多边形中无效边&#xff08;如果有&#x…...

sqlalchemy的部分函数合集

func.concat func.group_concat func.find_in_set func.sum func.left func.month func.round func.avg func.rpad func.ifnull func.replace func.date_format CONCAT 函数&#xff1a;将两个或多个字符串连接在一起。例如&#xff1a; SELECT CONCAT(Hello, , World) AS r…...

mac苹果电脑使用日常

让鼠标和触摸板滚动方向一致&#xff1a;使用 Scroll Reverser 软件。 参考&#xff1a;Mac上鼠标滚轮方向是和Win相反的&#xff0c;系统中设置后触摸板的方向又跟着变了 操作&#xff1a; 截屏&#xff1a;shift command 3 复制粘贴&#xff1a;cmdc cmdv 剪切粘贴&#x…...

OpenClaw压力测试:百川2-13B-4bits模型连续处理100个文件的稳定性

OpenClaw压力测试&#xff1a;百川2-13B-4bits模型连续处理100个文件的稳定性 1. 测试背景与动机 上周在整理项目文档时&#xff0c;我遇到了一个典型问题&#xff1a;需要批量重命名103个Markdown文件&#xff0c;并从中提取关键字段生成目录索引。手动操作不仅耗时&#xf…...

VMware性能分配实战:CPU、内存与存储的黄金比例

1. VMware性能分配的核心逻辑 第一次用VMware创建虚拟机时&#xff0c;很多人会直接套用默认配置——比如给Windows 10分配4GB内存、2个vCPU。但当我同时启动3个这样的虚拟机时&#xff0c;宿主机16GB内存瞬间被吃光&#xff0c;而CPU利用率却只有30%。这个现象揭示了VMware资源…...

OpCore-Simplify终极指南:如何快速构建完美的OpenCore EFI配置

OpCore-Simplify终极指南&#xff1a;如何快速构建完美的OpenCore EFI配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的Hackintosh配置…...

从LDF文件看LIN调度:为什么说‘可预测性’是汽车低端总线的灵魂?

从LDF文件看LIN调度&#xff1a;为什么说‘可预测性’是汽车低端总线的灵魂&#xff1f; 当你按下车窗按钮时&#xff0c;那个瞬间发生的升降动作背后&#xff0c;隐藏着一套精密的通信协议在默默运作。不同于高端车载网络CAN总线的复杂仲裁机制&#xff0c;LIN总线以其独特的&…...

AtlasOS系统性能优化指南:从诊断到维护的全方位解决方案

AtlasOS系统性能优化指南&#xff1a;从诊断到维护的全方位解决方案 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atl…...

体验人机协同:在快马平台利用ai辅助开发优化天气查询代码

最近在做一个天气查询的小工具&#xff0c;原本的代码功能很简单&#xff0c;就是从API获取数据然后打印出来。但实际用起来发现很多问题&#xff1a;网络不好的时候直接崩溃&#xff0c;返回的数据格式也经常对不上。正好在InsCode(快马)平台上看到了AI辅助开发的功能&#xf…...

Tomcat安全防护指南:如何防御CVE-2017-12615和CNVD-2020-10487漏洞攻击

Tomcat安全防护实战&#xff1a;从漏洞原理到企业级防御体系构建 最近在帮某金融客户做安全审计时&#xff0c;发现他们的Tomcat服务器竟然还开着AJP端口&#xff0c;而且管理后台用的还是默认密码。这让我想起去年处理过的一次安全事件——攻击者仅用3小时就通过CVE-2017-1261…...

DanKoe 视频笔记:重塑自我:如何摆脱糟糕的生活状态

在本教程中&#xff0c;我们将探讨为何生活可能陷入困境&#xff0c;并学习如何通过一系列有意识的微小选择、提升个人标准以及利用互联网的力量来重塑自我&#xff0c;最终走上价值创造者的道路。我们将分析问题的根源&#xff0c;并提供具体的行动步骤。 微小的选择&#xf…...

解决WSL2和Hyper-V网络冲突:最新镜像模式+防火墙配置指南

解决WSL2与Hyper-V网络冲突的终极方案&#xff1a;镜像模式与防火墙深度配置 在Windows系统上同时运行WSL2和Hyper-V虚拟机时&#xff0c;网络冲突问题几乎成为每个开发者的必经之路。想象一下这样的场景&#xff1a;当你正在调试一个分布式系统&#xff0c;WSL2中的微服务需要…...

Bilibili视频下载终极指南:如何免费高效保存B站精彩内容

Bilibili视频下载终极指南&#xff1a;如何免费高效保存B站精彩内容 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...