原型链(一定要搞懂啊!!!>-<)

news2024/11/25 0:58:03

一、概念

1、prototype

 习惯称作“显示原型”,只有构造函数才有的属性。

2、构造函数

能用new关键字创建的对象叫做构造函数

3、__proto__

习惯称作“隐式原型”,每一个实例都有的属性,该属性指向他构造函数的“显示原型”。Function对象的__proto__属性比较特殊指向了Function的显示原型“prototype”上,这也比较好理解,Function对象的构造函数也是Fuction类型,所以指向了它自身的显示原型上。

function Person (name,age){   //构造函数
    this.name =name
    this.age = age
}
Person.prototype.gender='male'
const person = new Person('小红',22)  //实例
console.log(Person.prototype)
console.log(person.__proto__)
//打印信息如下,证明构造函数的显示原型和实例的隐式原型是同一个
VM861:7 {gender: 'male', constructor: ƒ}
VM861:8 {gender: 'male', constructor: ƒ}

 他们之间的关系如下图:

二、Function和Object

在javascript中Function和Object是两个比较特殊的东西,Object的构造函数是一个函数因此它的隐式原型__proto__指向了Function的显示原型prototype上。Function同时也是一个对象,因此它的显示原型prototype的隐式原型__proto__又指向了Object的显示原型prototype上。

console.log(Function.__proto__ === Function.prototype)
VM1588:1 true

console.log(Object.prototype.__proto__)  //原型链的末端是null
VM1739:1 null

console.log(Function.prototype === Function.__proto__)
VM1914:1 true


console.log(Object.__proto__ === Function.prototype)
VM2211:1 true

console.log(Function.prototype.__proto__ === Object.prototype)
VM2463:1 true

三、总结

javascript中每一个对象都有一个“隐式原型”:__proto__;每一个函数都有一个“显示原型”:prototype;对象的隐式原型指向了它的构造函数的显示原型上。

四、原型链

当我们查找对象的某个属性时,如果在它自身上找不到,那么将会在它构造函数的显示原型上去找,如果还找不到就会继续在它的构造函数的显示原型上去找,一直找到Object的原型对象null为止,这样由__proto__串联形成的一个链式结构就称为原型链。 

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

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

相关文章

iwebsec靶场 文件包含漏洞通关笔记2-文件包含绕过(截断法)

目录 前言 1.%00截断 2.文件字符长度截断法(又名超长文件截断) 方法1(路径截断法) 方法2(点号截断法) 第02关 文件包含绕过 1.打开靶场 2.源码分析 3.00文件截断原理 4.00截断的条件 5.文件包含00截断绕过 …

传统大数据迁移遇到的问题与解决方案

信息技术的进步和普及使得各个领域都在持续产生和积累大量的数据,这些数据蕴含了丰富的信息和价值,被称为大数据。据国际权威机构IDC预测,到2025年,全球数据总量将达到175ZB(1ZB1024EB1024^7B),…

YOLOv5的常见报错总结

目录 1.安装pycocotools报错 2.Cant get attribute SPPF on module models.common 2.1原因 2.2解决方案 3.[WinError 1455] 页面文件太小,无法完成操作 3.1原因 3.2解决方案 4.AssertionError: Image Not Found D:\PycharmProjects\yolov5-hat\VOCdevkit\im…

centos安装flink,通过windows访问webui

1. 安装flink 1.1. flink的下载 通过flink官网下载flink安装包 https://flink.apache.org/ 下载安装包 1.2 flink在centos上的安装 将下载好的flink-1.17.1-bin-scala_2.12.tgz安装包放到centos目录下 解压文件: [rootlocalhost ~]# tar -zxvf flink-1.17.…

Vue3常用语法记录,基础使用看这篇就够了

1、ref const test ref<number>(8) 2、reactive const testObj reactive({test001: ,test002: }) 3、props & defineEmits defineProps({icon: String, }); const emit defineEmits([change, update:value, format-error]); emit(update:value, v); 4、wat…

DataGrip实时模板的配置2.0

印象里一直记着配置过代码实时模板&#xff0c;但是忘了换了工作电脑&#xff0c;之前配置的模板在我另一台电脑上 需要重新配置一下&#xff0c;我是笨蛋orz 配置方法和之前的一致 DataGrip实时模板的配置_王小小鸭的博客-CSDN博客https://blog.csdn.net/clover_oreo/articl…

9月11日上课内容 第二章 GFS 分布式文件系统

本章结构 前言 存储 块存储 硬盘 文件存储 nfs lvm raid ext4 ext3 centos6 xfs centos7 对象存储 GFS Ceph fastdfs 云端 OSS 阿里云存储 url链接 S3 亚马逊 …

证件照换衣服怎么换?学会这两招不用重拍证件照

当我们申请各种证件时&#xff0c;证件照往往是不可或缺的一步。这张照片会被用于各种场合&#xff0c;比如办理银行卡、信用卡、驾驶证、护照、签证等等&#xff0c;因此&#xff0c;它的重要性不言而喻。而证件照上的衣服则是影响印象的一个重要因素。所以&#xff0c;为了让…

2022年全国研究生数学建模竞赛华为杯A题移动场景超分辨定位问题求解全过程文档及程序

2022年全国研究生数学建模竞赛华为杯 A题 移动场景超分辨定位问题 原题再现&#xff1a; 在日常家庭生活中&#xff0c;人们可能需要花费大量时间去寻找随意摆放在家中某些角落里的小物品。但如果给某些重要物品贴上电路标签&#xff0c;再利用诸如扫地机器人的全屋覆盖能力&…

手动实现一个bind函数!

原文地址&#xff1a;手动实现一个bind函数&#xff01; - 知乎 1.bind函数用法 bind()方法用于创建一个新的函数&#xff0c;这个新函数接收的第一个参数代表的就是this&#xff0c;利用bind()函数我就就可以任意改变函数内部的this指向了。 官网的解释&#xff1a; bind()…

缩小检索范围、精准检索文献的方法

搜索文献也需要找到正确的方法&#xff0c;因为不正确的搜索方法直接影响搜索结果。要么发现的文献与我们需要的无关&#xff0c;要么检索到的文献很少&#xff0c;这不仅浪费时间&#xff0c;而且浪费精力。本文整理了准确检索文献、缩小文献检索范围的详细方法&#xff0c;希…

三步高效搭建在线帮助中心,这几个技巧与工具必须掌握

搭建一个高效的在线帮助中心是提供优质客户支持的重要组成部分。下面将介绍三个步骤&#xff0c;以及必须掌握的技巧和工具&#xff0c;帮助你快速搭建一个高效的在线帮助中心。 第一步&#xff1a;规划和准备 在搭建在线帮助中心之前&#xff0c;首先需要进行一些规划和准备…

python自动生成小学四则运算题目

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 话不多说&#xff0c;直接开搞&#xff0c;如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 题目一 1.题目要求&#xff1a; 设计一个程序&#xff0c;帮助小学生练习10以内的加法 详情: 随机生成加法题目; 学生…

《向量数据库指南》——向量数据库会是 AI 的“iPhone 时刻”吗?

最近一年,以 ChatGPT、LLaMA 为代表的大语言模型的兴起,将向量数据库的发展推向了新的高度。 向量数据库是一种在机器学习和人工智能领域日益流行的新型数据库,它能够帮助支持基于神经网络而不是关键字的新型搜索引擎。向量数据库不同于传统的关系型数据库,例如 PostgreSQ…

Vue3 Element-Plus 主题切换方案

1. .html 文件中&#xff0c;设置 <html> 标签的 “data-theme” 属性 2. 单独创建主题的样式文件 .css/.scss &#xff0c;并导入 3. 样式文件中创建不同主题对象 4. 定义不同主题中的样式变量 注意&#xff1a;左右两个主题的变量名一样&#xff0c;值不同 5. 页面样式…

【Hive SQL】统计同名路径下目录数量(基于reverse、split和substr函数)

首先&#xff0c;Hive事务表所产生的的路径信息如下&#xff1a; PS&#xff1a;其中路径信息格式为 /user/hive/warehouse/${database_name}.db/${table_name}/*/user/hive/warehouse/test.db/tran_ts/delete_delta_0000002_0000002_0000 /user/hive/warehouse/test.db/tran_…

VUE响应式

响应式 :::tip 提示 我们了解过响应式可以同步更新数据和视图&#xff0c;但是其工作原理我们最好也要了解一下。这样当你使用时遇到一些常见的错误&#xff0c;也能够快速定位是什么问题导致的。 了解响应式原理之前&#xff0c;你必须要先去了解 ES5 的 Object.defineProper…

项目管理的工作分解结构 (WBS):如何创建及使用

工作分解结构 (WBS) 是一种可视化的项目分解。通过将项目分解为更小的组件&#xff0c;WBS 可以将范围、成本和可交付成果集成到一个工具中。虽然大多数 WBS 是基于可交付成果的&#xff0c;但它们也可以是基于阶段的。下面来详细了解 WBS 可以为项目管理做些什么。 项目管理中…

Linux 磁盘管理,分区,文件系统

目录 磁盘基本概念 磁盘在Linux中的表示 分区的概念&#xff0c;分区是软件概念 MBR GPT 使用fdisk进行磁盘管理 文件系统 mke2fs mkfs mke2fs mkfs dumpe2fs 日志 e2label fsck (file system check) 挂载、使用文件系统&#xff0c;mount,unmount 自动挂载…

大数据平台测试

简介&#xff1a; 一.大数据平台测试简述 大数据平台测试包括2部分&#xff1a;基础能力测试和性能测试 Ⅰ).基础能力测试 大数据平台的基本功能和数据的导入导出对SQL任务、NoSQL任务、机器学习、批处理任务的支持 大数据平台是否能够通过界面的形式方便用户进行非运行维护&am…