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

js组合继承

JS组合继承(combination inheritance)是一种常用的继承模式,它通过将原型链和构造函数组合使用来实现继承。

下面是JS组合继承的详细解析和代码示例:

  1. 创建父类(基类)的构造函数
function Parent(name) {this.name = name;this.colors = ['red', 'green', 'blue'];
}

  1. 给父类添加原型方法
Parent.prototype.getName = function() {console.log(this.name);
};

  1. 创建子类的构造函数,并调用父类构造函数
function Child(name, age) {Parent.call(this, name);this.age = age;
}

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

  1. 修正子类的构造函数指向
Child.prototype.constructor = Child;

  1. 添加子类的原型方法
Child.prototype.getAge = function() {console.log(this.age);
};

  1. 创建子类的实例,并调用父类和子类的方法
var child1 = new Child('Alice', 10);
child1.getName();  // 输出:Alice
child1.getAge();   // 输出:10child1.colors.push('yellow');
console.log(child1.colors);  // 输出:['red', 'green', 'blue', 'yellow']var child2 = new Child('Bob', 20);
child2.getName();  // 输出:Bob
child2.getAge();   // 输出:20
console.log(child2.colors);  // 输出:['red', 'green', 'blue']

在这个例子中,通过组合使用构造函数和原型链实现了继承。构造函数的继承通过在子类的构造函数中调用父类的构造函数来实现,这样就可以在子类的实例中拥有父类的属性。原型链的继承通过将子类的原型对象设置为父类的一个实例,这样就可以在子类的原型链上访问父类的方法。

需要注意的是,组合继承的缺点是在创建子类实例时调用了两次父类构造函数,一次是在Child.prototype = new Parent()这一步中,另一次是在Child.call(this, name)中。这样会导致子类的原型对象上多了一些不必要的属性,但是通过Object.create()可以解决这个问题。

总结:JS组合继承是一种常用的继承模式,它通过组合使用构造函数和原型链实现继承。虽然有一些缺点,但是它兼顾了构造函数继承和原型链继承的优点,可以有效地实现继承和方法的重用。

相关文章:

js组合继承

JS组合继承(combination inheritance)是一种常用的继承模式,它通过将原型链和构造函数组合使用来实现继承。 下面是JS组合继承的详细解析和代码示例: 创建父类(基类)的构造函数 function Parent(name) {…...

Spring-kafka消费者消费的一些问题

前言 Spring Kafka 无缝集成了 Spring Boot、Spring Framework 及其生态系统中的其他项目,如 Spring Cloud。通过与 Spring Boot 的自动配置结合,开发者可以快速启动和配置 Kafka 相关的功能。无需编写大量样板代码即可实现 Kafka 的生产和消费功能&…...

【自我提升】提升能量书籍

《原子习惯》 (Atomic Habits) - 詹姆斯克利尔 (James Clear): 核心思想:微小的习惯改变可以带来显著的生活变化。方法: 将大目标拆分为可管理的小习惯。使用“习惯堆叠”技术,将新习惯与已有习惯结合。创建支持性环境&#xff0c…...

python图像处理库-PIL(Pillow)

PIL库全称为Python Imaging Library,即Python图像处理库,是一个在Python中用于处理图像的非常流行的库。 一、PIL介绍 这个库提供了广泛的文件格式支持、高效的内部表示以及相当强大的图像处理功能。 核心图像库旨在快速访问存储在几种基本像素格式中的数…...

【2024】kafka streams的详细使用与案例练习(2)

目录 前言使用1、整体结构1.1、序列化 2、 Kafka Streams 常用的 API2.1、 StreamsBuilder2.2、 KStream 和 KTable2.3、 filter和 filterNot2.4、 map 和 mapValues2.5、 flatMap 和 flatMapValues2.6、 groupByKey 和 groupBy2.7、 count、reduce 和 aggregate2.8、 join 和 …...

qt 简单实验 读取json格式的配置文件

1.概要 2.代码 //#include "mainwindow.h"#include <QApplication> #include <QFile> #include <QJsonDocument> #include <QJsonObject> #include <QDebug> //读取json数据的配置文件QJsonObject readJsonConfigFile(const QString …...

Docker常用命令与实战示例

docker 1. 安装2. 常用命令3. 存储4. 网络5. redis主从复制示例6. wordpress示例7. DockerFile8. 一键安装超多中间件&#xff08;compose&#xff09; 1. 安装 以centOS系统为例 # 移除旧版本docker sudo yum remove docker \docker-client \docker-client-latest \docker-c…...

数据结构(基础知识)

基础概念&#xff1a; 数据&#xff1a;数据是信息的载体&#xff0c;是描述客观事物属性的数&#xff0c;字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合 数据元素&#xff1a;是数据的基本单位&#xff0c;在程序中常作为一个整体来考虑 数据对象&#…...

计算机网络:网络层 - 路由选择协议

计算机网络&#xff1a;网络层 - 路由选择协议 路由器的结构路由选择协议概述自治系统 AS内部网关协议路由信息协议 RIP距离向量算法RIP报文格式收敛问题 开放最短路径优先 OSPF基本工作原理自治系统分区 外部网关协议BGP-4 路由器的结构 如图所示&#xff0c;路由器被分为路由…...

JupyterLab使用指南(六):JupyterLab的 Widget 控件

1. 什么是 Widget 控件 JupyterLab 中的 Widget 控件是一种交互式的小部件&#xff0c;可以用于创建动态的、响应用户输入的界面。通过使用 ipywidgets 库&#xff0c;用户可以在 Jupyter notebook 中创建滑块、按钮、文本框、选择器等控件&#xff0c;从而实现数据的交互式展…...

OpenCV 特征点检测与匹配

一 OpenCV特征场景 ①图像搜索&#xff0c;如以图搜图&#xff1b; ②拼图游戏&#xff1b; ③图像拼接&#xff0c;将两长有关联得图拼接到一起&#xff1b; 1 拼图方法 寻找特征 特征是唯一的 可追踪的 能比较的 二 角点 在特征中最重要的是角点 灰度剃度的最大值对应的…...

css布局之flex应用

/*父 100*/.parent-div {/* 这里添加你想要的属性 */display: flex;flex-direction: row; //行justify-content: space-between; //左右对齐align-items: center;flex-wrap: wrap; //换行}/*中 90 10 */.middle-div {/* 这里添加你想要的属性 */display: flex;flex-direction:…...

树莓派4B设置AP热点步骤

树莓派4B设置AP热点步骤&#xff1a;先进入root模式 预先进行apt-get update 第1步&#xff1a;安装network-manager ​sudo apt-get install network-manager第2步&#xff1a;安装git apt-get install git apt-get install util-linux procps hostapd iproute2 iw haveged …...

Java程序之百鸡百钱问题

题目&#xff1a; 百钱买百鸡的问题算是一套非常经典的不定方程的问题&#xff0c;题目很简单&#xff1a;公鸡5文钱一只&#xff0c;母鸡3文钱一只&#xff0c;小鸡3只一文钱&#xff0c;用100文钱买一百只鸡,其中公鸡&#xff0c;母鸡&#xff0c;小鸡都必须要有&#xff0c;…...

Mybatis——动态sql

if标签 用于判断条件是否成立。使用test属性进行条件判断&#xff0c;如果条件为true&#xff0c;则拼接sql。 <where>标签用于识别语句是否需要连接词and&#xff0c;识别sql语句。 package com.t0.maybatisc.mapper;import com.t0.maybatisc.pojo.Emp; import org.a…...

可视化大屏开发系列——页面布局

页面布局是可视化大屏的基础&#xff0c;想要拥有一个基本美观的大屏&#xff0c;就得考虑页面整体模块的宽高自适应&#xff0c;我们自然就会想到具有强大灵活性flex布局&#xff0c;再借助百分比布局来辅助。至此&#xff0c;大屏页面布局问题即可得到解决。 可视化大屏开发系…...

Python statistics 模块

Python 的 statistics 模块提供了一组用于执行各种统计计算的函数&#xff0c;包括平均值、中位数、标准差、方差以及其他统计量。让我来简单介绍一下。 首先&#xff0c;你可以使用以下方式导入 statistics 模块&#xff1a; python import statistics 接下来&#xff0c;…...

wireshark常见使用表达式

目录 1. 捕获过滤器 (Capture Filters)基本捕获过滤器组合捕获过滤器 2. 显示过滤器 (Display Filters)基本显示过滤器复杂显示过滤器协议特定显示过滤器 3. 进阶显示过滤器技巧使用函数和操作符逻辑操作符 4. 常见网络协议过滤表达式示例HTTP 协议HTTPS 协议DNS 协议DHCP 协议…...

用Java获取键盘输入数的个十百位数

这段Java代码是一个简单的程序&#xff0c;用于接收用户输入的一个三位数&#xff0c;并将其分解为个位、十位和百位数字&#xff0c;然后分别打印出来。下面是代码的详细解释&#xff1a; 导入所需类库: import java.util.Scanner;&#xff1a;导入Scanner类&#xff0c;用于从…...

第10章 启动过程组 (制定项目章程)

第10章 启动过程组 9.1制定项目章程&#xff0c;在第三版教材第356~360页&#xff1b; 文字图片音频方式 视频12 第一个知识点&#xff1a;主要输出 1、项目章程&#xff08;重要知识点&#xff09; 项目目的 为了稳定与发展公司的客户群(抽象&#xff0c;非具体) 可测量的项目…...

基于NSGA-II多目标遗传优化算法的考虑风光火储+需求响应+P2G多能源系统多目标优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Phi-4-mini-reasoningGPU算力适配:A10/A100/T4多卡环境下的推理吞吐调优

Phi-4-mini-reasoning GPU算力适配&#xff1a;A10/A100/T4多卡环境下的推理吞吐调优 1. 模型特性与部署概述 Phi-4-mini-reasoning 是一款专注于推理任务的文本生成模型&#xff0c;特别擅长处理数学题、逻辑题等需要多步分析和简洁结论输出的场景。与通用聊天模型不同&…...

Qwen2.5-VL-7B-Instruct新手必看:无需网络,纯本地部署的多模态AI工具

Qwen2.5-VL-7B-Instruct新手必看&#xff1a;无需网络&#xff0c;纯本地部署的多模态AI工具 你是不是经常遇到这样的场景&#xff1a;看到一张复杂的图表&#xff0c;想快速提取里面的数据&#xff1b;收到一张产品照片&#xff0c;需要生成详细的描述文案&#xff1b;或者想…...

NCM格式转换技术解析:从加密限制到音频自由的技术实现

NCM格式转换技术解析&#xff1a;从加密限制到音频自由的技术实现 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 一、问题场景&#xff1a;数字音乐的格式枷锁与用户困境 1.1 音乐人的设备兼容困境 独立音乐人小林最近遇到了一个…...

Anaconda环境管理:为Phi-4-mini-reasoning 3.8B创建独立的Python开发环境

Anaconda环境管理&#xff1a;为Phi-4-mini-reasoning 3.8B创建独立的Python开发环境 1. 为什么需要独立环境&#xff1f; 在数据科学和机器学习项目中&#xff0c;环境隔离是个经常被忽视但极其重要的问题。想象一下这样的场景&#xff1a;你花了两周时间调试一个模型&#…...

Graphormer开源镜像部署指南:3.7GB轻量模型GPU快速启动(RTX4090实测)

Graphormer开源镜像部署指南&#xff1a;3.7GB轻量模型GPU快速启动&#xff08;RTX4090实测&#xff09; 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。该模…...

<数据集>yolo骑行者识别<目标检测>

数据集下载链接https://blog.csdn.net/qq_53332949/article/details/159770308?spm1011.2415.3001.5331数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;13674张 标注数量(xml文件个数)&#xff1a;13674 标注数量(txt文件个数)&#xff1a;13674 标注类别数&…...

昆明波纹管供应商哪个好

在市政排水、农田灌溉、通信保护等工程领域&#xff0c;HDPE双壁波纹管因其优异的环刚度、耐腐蚀性和施工便捷性&#xff0c;已成为不可或缺的关键建材。然而&#xff0c;面对市场上琳琅满目的供应商&#xff0c;尤其是在地质气候条件独特的西南地区&#xff0c;如何选择一个真…...

毕业设计用什么ai?实测8款AI论文生成工具测评,查重率仅6%超可靠!

每到毕业季&#xff0c;论文写作就成了无数学生的头号难题。从开题报告到文献综述&#xff0c;再到数万字的正文&#xff0c;每个环节都充满挑战。别担心&#xff01;AI论文写作工具的出现&#xff0c;让高效完成高质量论文成为可能。本文实测了8款主流AI论文生成工具&#xff…...

成为数据科学家之路,第一部分:数学

原文&#xff1a;towardsdatascience.com/roadmap-to-becoming-a-data-scientist-part-1-maths-2dc9beb69b27 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/492ae0fb35397ff6690bc9518f937530.png 简介 数据科学无疑是当今最迷人的领域…...