类与Object.create之间的继承

news2024/9/22 17:27:40

前言

● 下面是一段之前学习Object.create的一段代码

const PersonProto = {
  calcAge() {
    console.log(2037 - this.birthYear);
  },

  init(firstName, birthYear) {
    this.firstName = firstName;
    this.birthYear = birthYear;
  }
};

const zhangsan = Object.create(PersonProto);
● 和之前一样,我们创建学生的继承

const PersonProto = {
  calcAge() {
    console.log(2037 - this.birthYear);
  },

  init(firstName, birthYear) {
    this.firstName = firstName;
    this.birthYear = birthYear;
  }
};

const zhangsan = Object.create(PersonProto);

const StudentProto = Object.create(PersonProto);
const ITshare = Object.create(StudentProto);
ITshare.init('ITshare', 2005);

在这里插入图片描述

● 和之前一样,学生的类可以添加新的方法

const PersonProto = {
  calcAge() {
    console.log(2037 - this.birthYear);
  },

  init(firstName, birthYear) {
    this.firstName = firstName;
    this.birthYear = birthYear;
  }
};

const zhangsan = Object.create(PersonProto);

const StudentProto = Object.create(PersonProto);
StudentProto.init = function (firstName, birthYear, course) {
  PersonProto.init.call(this, firstName, birthYear);
  this.course = course;
};
const ITshare = Object.create(StudentProto);
ITshare.init('ITshare', 2005, '计算机科学与技术');

在这里插入图片描述

● 像之前一样,写一段介绍的方法,可以调用原型链中的方法

//对象继承
const PersonProto = {
  calcAge() {
    console.log(2037 - this.birthYear);
  },

  init(firstName, birthYear) {
    this.firstName = firstName;
    this.birthYear = birthYear;
  }
};

const zhangsan = Object.create(PersonProto);

const StudentProto = Object.create(PersonProto);
StudentProto.init = function (firstName, birthYear, course) {
  PersonProto.init.call(this, firstName, birthYear);
  this.course = course;
};

StudentProto.introduce = function () {
  console.log(`我的名字叫${this.firstName},我的专业是${this.course}`);
};
const ITshare = Object.create(StudentProto);
ITshare.init('ITshare', 2005, '计算机科学与技术');

ITshare.introduce();
ITshare.calcAge();

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day-43 括号生成

思路 通过深度优先遍历,把所有可能的组合枚举出来,然后依次判断是否符合括号规则,符合则加入链表 解题过程 判断是否括号规则:第一个位置只能是(,维护一个val值(初始值为0),遍历字符串,每当加入…

深度强化学习算法(四)(附带MATLAB程序)

深度强化学习(Deep Reinforcement Learning, DRL)结合了深度学习和强化学习的优点,能够处理具有高维状态和动作空间的复杂任务。它的核心思想是利用深度神经网络来逼近强化学习中的策略函数和价值函数,从而提高学习能力和决策效率…

【项目日记】高并发内存池---实现线程缓存

比起那些用大嗓门企图压制世界的人, 让全世界都安静下来听你小声说话的人更可畏。 --- 韩寒 《告白与告别》--- 高并发内存池项目---实现线程缓存 1 框架设计2 自由链表类和哈希规则2.1 自由链表类2.2 映射规则 3 实现线程缓存3.1 申请内存3.2 释放内存 4 多线程…

day-43 盛最多水的容器

思路 双指针:首先令i0,jheight.length-1,选取短板(即Math.min(height[i],height[j])),然后将短板向内移动,直达i>j即可得到答案。 解题过程 短板向内移动:水的容量可能增大 长板向内移动:水的容量不可能…

树莓派5安装系统并配置SSH与VNC权限实现Windows设备远程连接

文章目录 前言1. 使用 Raspberry Pi Imager 安装 Raspberry Pi OS2. Windows安装VNC远程树莓派3. 使用VNC Viewer公网远程访问树莓派3.1 安装Cpolar步骤3.2 配置固定的公网地址3.3 VNC远程连接测试 4. 固定远程连接公网地址4.1 固定TCP地址测试 前言 本文主要介绍如何在树莓派…

数字化转型升级探索(一)

在数字化转型升级的探索中,我们将通过实施综合数字化战略,涵盖从前端用户体验优化到后端系统集成的全方位提升,利用大数据、人工智能、云计算等先进技术对业务流程进行智能化改造,推进自动化和数据驱动决策,推动业务模…

VMware安装Ubuntu 23.10.1系统图文版

文章目录 Ubuntu系统介绍引言Ubuntu系统的特点1. 开源免费2. 易用性3. 稳定性与安全性4. 强大的社区支持 安装与初步设置下载ISO镜像安装1.新建虚拟机2.选择“自定义(高级)”,并点击【下一步】3.选择虚拟机硬件兼容性(默认就好),并点击【下一步】4.选择“…

爆改yolov8|利用BSAM改进YOLOv8,高效涨点

1,本文介绍 BSAM基于CBAM进行改进,经实测在多个数据集上都有涨点。 BSAM(BiLevel Spatial Attention Module)是一个用于提升深度学习模型在空间特征处理中的能力的模块。它主要通过双层注意力机制来增强模型对重要空间信息的关注…

一款支持固定区域,固定尺寸大小重复截图的软件

WinSnap是一款功能强大的屏幕截图软件,可以实现对固定区域,固定尺寸大小区域重复截图,适用于日常截图需求和专业用户进行屏幕截图和图像编辑。通过设置快捷键,方便快速重复截图固定区域固定大小。它支持捕捉整个屏幕、活动窗口、选…

H264码流结构讲解

所谓的码流结构就是指:视频经过编码之后所得到的数据是怎样排列的,换句话说,就是编码后的码流我们该如何将一帧一帧的数据分离开来,哪一块数据是一帧图像,哪一块是另外一帧图像,只要了解了这个,…

UE开发中的设计模式(四) —— 组合模式

面试中被面试官问到组合模式和继承有什么区别&#xff0c;给我问懵了&#xff0c;今天又仔细看了下&#xff0c;这不就是UE里的组件吗 >_< 文章目录 问题提出概述问题解决总结组合模式的优缺点继承的优缺点 问题提出 考虑这样一个场景&#xff0c;我们有一个敌人的基类&…

【读书笔记-《30天自制操作系统》-10】Day11

本篇内容继续围绕显示展开。首先对鼠标显示做了些优化&#xff0c;鼠标箭头在到达画面边缘时能够实现部分隐藏&#xff1b;接下来制作了窗口&#xff0c;实现了窗口显示&#xff1b;最后还在窗口的基础上实现了计数器&#xff0c;显示计数的变化并消除闪烁的问题。 1. 画面边…

Java 6.3 - 定时任务

为什么需要定时任务&#xff1f; 常见业务场景&#xff1a; 1、支付10min失效 2、某系统凌晨进行数据备份 3、视频网站定时发布视频 4、媒体聚合平台每10min抓取某网站数据为己用 …… 这些场景需要我们在某个特定时间去做某些事情。 单机定时任务技术有哪些&#xff1f…

form-data和x-www-form-urlencoded的区别

form-data和x-www-form-urlencoded区别 form-data 和 x-www-form-urlencoded 都是表单请求的一种格式&#xff0c;主要区别有两点。 编码方式不同 我们先说x-www-form-urlencoded&#xff0c;它的编码方式就隐藏在名字里&#xff1a;urlencoded。看到这个关键词&#xff0c;…

Gradle下载失败或者慢怎么办

在Android Studio开发过程中&#xff0c;经常需要下载Gradle构建工具来构建项目。然而&#xff0c;由于网络限制或国际镜像服务器响应慢&#xff0c;Gradle的下载过程可能会非常缓慢甚至失败。为了优化这一过程&#xff0c;我们可以采用国内的Gradle镜像来加速下载。同时&#…

期权的交易时间是什么时候?期权具体交易时间分享!

今天带你了解期权的交易时间是什么时候&#xff1f;期权具体交易时间分享&#xff01;期权交易时间与股票市场同步&#xff0c;每个交易日的上午9:15至11:30和下午13:00至15:00为主要的交易时间。 50ETF期权交易时间 1.50ETF期权交割日&#xff1a; 固定的规则&#xff1a; …

FLUX 1 将像 Stable Diffusion 一样完整支持ControlNet组件

之前 InstantX 团队做的多合一的 Flux ControlNet 现在开始和 ShakkerAI 合作并推出了&#xff1a;Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro 该模型支持 7 种控制模式&#xff0c;包括 canny (0), tile (1), depth (2), blur (3), pose (4), gray (5) 和 low quality (6)…

Priority_Queue 的使用和模拟

目录 一基本的介绍 优先队列是一种容器适配器&#xff1b;他的第一个元素总是他包含所有元素里面最大的一个。 他的底层容器可以是任何标准容器类模板&#xff0c;也可以是其他特定设计的容器类。 这个底层容器应该可以通过随机访问迭 代器&#xff0c;并支持以下操作&#x…

【LINUX】ifconfig -a查看到的发送、接收包数和字数字节数在驱动层代码大概位置

先看结果 ifconfig -a查看到发送的信息&#xff1a; 从上图可以看出来网卡驱动代码的目录是在drivers/net/ethernet/intel/e1000/e1000_main.c 下图是接收到的信息&#xff1a; 不过这些数据是在虚拟机看到的&#xff0c;如果有条件可以在实际的物理网卡测试看看效果。 下边这…