第十九章 类的继承

文章目录

  • 一、继承
  • 二、原型
  • 三、原型和实例关系的检测

一、继承

  1. 面向对象三大特点:封装,继承,多态
    • 封装:打包
    • 继承:一个对象A不具有某个功能a,通过某种方式使用了对象B的a功能 的过程
    • 多态:对象或功能的多种形态,在使用某个对象时,不关心从哪来,在封装某个对象时,不关心将要在哪被使用
  2. 继承
    • 构造函数执行之后得到的实例,继承了原型身上的方法(实例继承了类的原型)
    • 类与类之间的继承
  3. 继承方式
    • 构造函数继承(改变this指向继承)
      • call,apply,bind
      • 简单方便易操作
      • 非常易于做多继承
      • 只能继承构造函数内的属性或方法,不能继承原型身上的属性或方法
    • 原型对象继承
      • 其实就是在拷贝原型对象,同时注意深浅拷贝
      • 只能继承原型对象上的属性或方法,不能继承构造函数内的属性或方法
      • 可以实现多继承
    • 原型链继承
      • 既能继承构造函数内的属性或方法,又能继承原型上的属性或方法
      • 但是不方便处理参数
      • 不适合多继承
    • 混合(组合)继承
      • 构造函数+原型对象
      • 构造函数+原型链
      • 集合了各种方式的优点
    • ES6新增的class的继承
      • 语法层面上的继承
      • 父类是子类的超类
      • 原理:构造函数+原型继承

二、原型

  1. 隐式原型对象:__proto__,一般存在于对象身上,用于指向创建该对象的构造函数的prototype
  2. 显示原型对象:prototype,只存在于函数身上(除了箭头函数),用来被通过自身创建的对象的__proto__指向。
  3. 隐式原型的使用规则:
    • 每个对象都有__proto__,对象每次在使用属性或方法时,如果自身不存在,都会沿着__proto__的指向,依次查找,直到Object.prototype
    • 一个构造函数可以创建多个实例,如果给构造函数的prototype添加方法或属性,将来的每个实例都可以访问,达到节省内存的效果
    • 构造函数的prototype类似于将来所有实例的公共空间,提供公共方法,被实例使用
  4. 补充:构造函数的prototype自带了一个constructor的属性,用来标记当前prototype对象所属的函数

三、原型和实例关系的检测

  1. 关键字:instanceof
    • 语法:实例 instanceof 构造函数
  2. 显式原型对象的方法:isPrototypeOf()
    • 语法:构造函数.prototype.isPrototypeOf(实例)
  3. 有关系,无论多少层,都返回true,否则返回false
  4. 小技巧:可以利用该关系检测方式区分对象,数组

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

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

相关文章

【SQL server】DML触发器监控数据库字段值改变

文章目录 前言DML触发器基本思路创建触发器固定字段触发示例完整示例代码变量声明查询新旧值插入数据到日志表效果视频动态字段触发示例完整代码示例触发器基本信息变量声明定义游标打开游标临时表创建循环处理字段

c++学习:容器stack栈+queue+map(简易输入法)+deque

目录 stack 模板原型 头文件 模板的成员类型和成员对象和成员函数 栈类模板的容器对象 实例 queue 模板原型 头文件 模板的成员类型和成员对象和成员函数 队列类模板的容器对象 实例 map 模板原型 头文件 模板的成员类型和成员对象和成员函数 关联类模板的容器…

VScode远程连接开发嵌入式开发板

在做嵌入式开发时,很多时候需要远程连接或者远程调试设备,这时可以通过VScode上的插件来很方便的进行远程连接和调试。 ssh远程连接嵌入式开发板: 1、安装vscode ssh远程插件:Remote-SSH。 2、点击"",输入…

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的MySQL8.0.32的RPM包

本文适用:rhel8系列,或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期:2023年 因系统版本不同,构建部署应略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…

mac安装mysql和docker

官方下载页面:https://dev.mysql.com/downloads/mysql/ 傻瓜式安装 配置环境变量: open ~/.zshrc插入下面的配置: export PATH$PATH:/usr/local/mysql/bin export PATH$PATH:/usr/local/mysql/support-files$ source ~/.bash_profile $ …

【投稿优惠|火热征稿】2024年测量控制与轨道交通国际学术会议(ICMCRT 2024)

【投稿优惠|火热征稿】2024年测量控制与轨道交通国际学术会议(ICMCRT 2024) 2024 International Conference Measurement Control and Rail Transit(ICMCRT 2024) 一、【会议简介】 业内专家认为,在当今以信息技术带动工业化发展的时代,测量控制与仪器仪…

监督学习 - 逻辑回归(Logistic Regression)

什么是机器学习 逻辑回归(Logistic Regression)虽然名字中包含"回归"一词,但实际上是一种用于解决分类问题的统计学习方法,而不是回归问题。它是一种线性模型,常用于二分类问题,也可以扩展到多分…

Inis博客系统本地部署结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

socket.d.js v2.3.4 支持“微信“、“uniapp“

Socket.D 是基于"事件"和"语义消息""流"的网络应用层协议。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。协议特点可参考《官网介绍》。 Socket.D.js 兼容更新说…

搭建sprinboot服务环境

搭建sprinboot服务环境 安装jdk安装nginx安装Redis安装MySQL一 下载MySQL二 安装MySQL三 启动mysql服务获取初始化密码四 登陆MySQL五 修改密码六 设置远程访问七 相关问题错误:1819错误:1251 或 2059错误:10060忽略表名大小写 记录搭建sprin…

【Docker】概述与安装

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一. Docker的概述 1.Docker为什么出现 2…

Vue入门五(Vue-CLI项目搭建|vue项目目录介绍|vue项目开发规范|es6导入导出语法)

文章目录 一、Vue-CLI 项目搭建介绍node环境搭建1) 下载与安装2)测试是否安装成功 安装vue-cli安装vue脚手架 创建Vue项目1)使用命令创建项目2)使用图形化界面创建项目 二、vue项目目录介绍1.命令行运行vue项目2.Pycharm中运行项目3.目录结构…

Java基础项目---飞机大战的简易实现

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读前言一、系统分析问题描述总体设计功能流程图 二、程序和算法的介绍FlyingOb…

Open CASCADE学习|参数化球面的奇异性

参数曲面的奇异性是一个相对复杂的概念,它涉及到参数曲面的几何特性和参数化过程中的一些特殊情况。参数曲面通常用于描述三维空间中的复杂形状,通过参数方程将二维参数域映射到三维空间中。然而,在某些情况下,参数曲面可能会表现…

回顾2023,展望未来

回顾2023 重拾博客 CSDN博客创建和写作,几乎是和我正式开始学习编程开始,至今已经6年。刚上编程课的时候,刚上C语言课的时候,老师说可以通过写技术博客来帮助自己更好学习,于是我就开始自己的技术博客编写之旅。 我…

在微信上秒杀链接怎么做_带给用户微信秒杀新体验

微信秒杀新体验:让每一次点击都成为一次抢购的狂欢! 在这个数字化、信息化的时代,微信已经成为了我们生活中不可或缺的一部分。与此同时,微信营销也成为了众多商家竞相角逐的新战场。如何在众多的营销信息中脱颖而出,吸…

持续构建行业影响力|HarmonyOS SDK荣膺年度“技术卓越”奖项

自2023年9月华为宣布鸿蒙原生应用全面启动以来,HarmonyOS SDK通过将HarmonyOS系统级能力对外开放,支撑开发者高效打造更纯净、更智能、更精致、更易用的鸿蒙原生应用,和开发者共同成长。 通过在开发者社区和HarmonyOS开发者持续的内容共创与技…

Leetcode 494 目标和

题意理解: 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添…

Curl命令POST请求

curl工具介绍: CURL是一个利用URL语法在命令行下工作的文件传输工具,被广泛应用在Unix、Linux发行版中,并且有DOS和Win32、Win64的移植版本。同时它还支持诸多的通信协议(我们常用的有HTTP、HTTPS、FTP、SMTP、TELNET等&#xff0…

网站ICP备案和公安备案教程

由于最近华为云那边的服务器到期了,而续费的价格比较贵一点,刚好阿里云这边有活动就入手了一台,但是将网站迁移过来后发现又要进行ICP备案,那就备案呗。但是备案完成之后发现还有一个公安备案,真让人头大啊... 很多人也…