JavaScript学习-原型和原型链

原型和原型链

  • 示例代码
//创建一个Person类
class Person {
  constructor(name) {
    this.name = name;
  }

  drink() {
    console.log('喝水');
  }
}
//创建一个Teacher类,继承Person
class Teacher extends Person {
  constructor(name, subject) {
    super(name);
    this.subject = subject;
  }

  teach() {
    console.log(`我是${this.name},教${this.subject}.`)
  }
}

const teacher = new Teacher(`小明`,`英语`);
console.log(`teacher`, teacher);
teacher.teach();
teacher.drink();

解释

  • 原型链有显示原型和隐式原型两个概念,如以上代码可以这么理解,
  • Person类是第一个类,因此它里面的所有方法看作显式原型,
  • 然后是Teacher类,继承了Person类,因此Person类里面的显式原型变成了Teacher类里面的隐式原型,
  • 然后嘞,teacher是被Teacher给new出来的,因此Teacher里面的teach()方法就是teacher的隐式原型,而teacher的显式原型是自己的name、subject两个参数。
  • 就比如说上述代码的最后两行的调用,teacher本身没有的就会去隐式原型里面去找,找不到又去上一层找,因此就类似于一条链条,所以叫做原型链,以下图示看起来就类似于指针。
  • 或许换通俗一点的话来说,自己有的就是自己的显示原型,自己没有的,但是可以通过渠道调用别人的就是自己的隐式原型。
  • 那还有一个方法可以验证该属性或者方法是不是自身的,例如输入teacher.hasOwnProperty(‘name’),会返回一个true,而输入teacher.hasOwnProperty(‘teach’),会返回false。
  • 关于图示中的Object,几乎所有的对象都是Object的实例,也就是说他们都继承自Object.prototype,Object.prototype是原型链的顶端,它包含一些基本的方法和属性,所有的对象都可以访问这些方法和属性。呐,因此我们也可以说Object里面的方法是Person类的隐式原型,如下图所示。
  • 图示
    原型和原型链

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 仿微信聊天界面

1. 需求效果图 2. 方案 为实现这样的效果,首先要解决两个问题: 2.1.点击输入框弹出软键盘后,将已有的少许聊天内容弹出,导致看不到的问题 点击输入框弹出软键盘后,将已有的少许聊天内容弹出,导致看不到的问…

FFMPEG解析ts流

三篇相关联的文章: ffmpeg下HLS解析过程-CSDN博客TS文件格式详解及解封装过程-CSDN博客 FFMPEG解析ts流-CSDN博客 一、简介 关于TS格式解析,可以参考《TS文件格式详解及解封装过程-CSDN博客》,本文主要代码部分解读。建议大家熟读iso138…

【JaveWeb教程】(30)SpringBootWeb案例之《智能学习辅助系统》的详细实现步骤与代码示例(3)员工管理的实现

目录 SpringBootWeb案例033. 员工管理3.1 分页查询3.1.1 基础分页3.1.1.1 需求分析3.1.1.2 接口文档3.1.1.3 思路分析3.1.1.4 功能开发3.1.1.5 功能测试3.1.1.6 前后端联调 3.1.2 分页插件3.1.2.1 介绍3.1.2.2 代码实现3.1.2.3 测试 3.2 分页查询(带条件)3.2.1 需求3.2.2 思路分…

电流检测电路设计方案汇总

电流检测电路设计方案(一) 低端检流电路的检流电阻串联到地(图1),而高端检流电路的检流电阻是串联到高电压端(图2)。两种方法各有特点:低端检流方式在地线回路中增加了额外的线绕电…

内网穿透natapp使用教程(Linux)

我的使用场景:在家访问学校服务器,由于不在一个局域网,所以需要使用内网穿透,我使用的是natapp。需要在有局域网的时候做好以下步骤。 (natapp官网:https://natapp.cn/) 1. 下载客户端 &#x…

开发微信小程序,将图片下载到相册的方法,saveImageToPhotosAlbum怎么用

在开发微信小程序的时候,经常能看到小程序里面有下载按钮,如何将小程序中的图片下载到手机相册中那,下面给大家说一下怎么做,代码如何去写。 一、到微信小程序后台开启“用户隐私保护指引” 1.进入小程序后台,侧拉拉到…

第16章_网络编程(网络通信要素,TCP与UDP协议,网络编程API,TCP网络编程,UDP网络编程,URL编程)

文章目录 第16章_网络编程本章专题与脉络1. 网络编程概述1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一:IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二:端口号2.4 通信要素三:网络通信协议…

[C#]winform部署yolov5实例分割模型onnx

【官方框架地址】 https://github.com/ultralytics/yolov5 【算法介绍】 YOLOv5实例分割是目标检测算法的一个变种,主要用于识别和分割图像中的多个物体。它是在YOLOv5的基础上,通过添加一个实例分割模块来实现的。 在实例分割中,算法不仅…

自动化软件开发常用代码分享!

随着科技的发展,自动化软件开发已经成为现代企业不可或缺的一部分,自动化软件可以帮助企业提高生产效率、降低成本、优化业务流程。 而在自动化软件开发中,代码是实现这些功能的基础,本文将分享一些常用的自动化软件开发代码&…

苍穹外卖-前端部分(持续更新中)

d 第二种:cmd中输入 vue ui进入图形化界面选择npm,vue2进行创建 先将创建的Vue框架导入Vsocde开发工具 然后ctrshiftp 输入npm 点击serve将项目启动 下这种写法跨域会报错: 解决方法:

虚拟机内使用 archinstall 安装 arch linux 2024.01.01

文章目录 [toc]前言碎语安装 arch linuxArchinstall languageMirrorsLocalesDisk configurationBootloaderSwapHostnameRoot passwordUser accountProfileAudioKernelsAdditional packagesNetwork configurationTimezoneAutomatic time syncOptional repositoriesInstall 进入桌…

OceanMind海睿思入选《2023大数据产业年度创新技术突破奖》,并蝉联多项图谱

近日,由数据猿和上海大数据联盟主办,上海市经济和信息化委员会、上海市科学技术委员会指导的“第六届金猿季&魔方论坛——大数据产业发展论坛”在上海成功举行,吸引了数百位业界精英的参与。中新赛克海睿思作为国内数字化转型优秀厂商代表…

基于springboot+vue的校园资料分享平台(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

include文件包含

include 文件包含利用日志文件什么是日志文件 之所以会burp抓包上传就可以成功的原因,是因为burp可以绕过url编码,导致写入日志文件中的代码没有进行编码,可以直接解析成php文件 声明:其中图片并非本人实操,而是直接截…

软件包管理:在CentOS 7中部署Tengine

目录 下载: 方法一: 方法二: 部署: 实验操作 下载: 方法一: 1、打开浏览器搜索tengine并点击官网 2、选择需要安装的版本并复制链接链接 标题栏处可以更改为中文界面 下滑选择版本单击下载 在远程连…

matlab appdesigner系列-图窗3-菜单

菜单,常用来作为软件界面上方的菜单栏,可用来集成多种功能 示例:创建菜单栏的file选项,设置open,save,exit三个选项 操作步骤: 1)将菜单、图像拖拽到画布上,并修改对应…

【Midjourney】绘画风格关键词

1.松散素描(Loose Sketch) "Loose sketch"(松散素描)通常指的是一种艺术或设计中的手绘风格,其特点是线条和形状的表现相对宽松、自由,没有过多的细节和精确度。这样的素描通常用于表达创意、捕捉概念或者作为设计的初步…

《WebKit 技术内幕》学习之十五(5):Web前端的未来

5 Crosswalk项目 Crosswalk项目是由英特尔公司发起的一个开源项目,该项目基于WebKit(Blink)和Chromium等开源项目打造,其目的是提供一个跨不同操作系统的Web运行环境,包括Android、Tizen、Linux、Windows、MacOS等众多…

Docker容器(自定义镜像,Dockerfile,网桥,DockerCompose)

自定义镜像 镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。 构建步骤 镜像结构 Dockerfile 它是一个文本文件,包含很多指令,用指令来说明要执行什么操作来构建镜像。 官网&am…

滴滴开源小程序框架 Mpx 新特性:局部运行时能力增强

Mpx 是滴滴开源的一款增强型跨端小程序框架,自 2018 年立项开源以来如今已经进入第六个年头,在这六年间,Mpx 根植于业务,与业务共同成长,针对小程序业务开发中遇到的各类痛点问题提出了解决方案,并在滴滴内…
最新文章