【笔记】原型和原型链(持续完善)

概念

  1. 原型:函数都具有 prototype 属性,称之为原型,也称之为原型对象
    1.1 原型可以放一些属性和方法,共享给实例对象使用(也就是原生方法)。
    1.2 原型可以做继承
  2. 原型链:对象都有 __proto__ 属性,这个属性指向它的原型对象,原型对象也是对象,也有 __proto__ 属性,指向原型对象的原型对象,这样的链式结构称为原型链,最顶层找不到则返回 null.
  • 显式原型(prototype)是每个函数都有的一个属性,它指向一个对象,该对象包含可以由该函数的实例共享的属性和方法。当我们创建一个函数时,JavaScript 会自动为该函数创建一个 prototype 对象,并将其赋值给函数的 prototype 属性。
  • 隐式原型(__proto__)是每个对象都有的一个属性,它指向该对象的构造函数的原型对象。当我们创建一个对象时,JavaScript 会自动为该对象创建一个 __proto__ 属性,并将其指向创建该对象的构造函数的 prototype 属性。

区别

  1. prototype 是函数对象特有的属性,而 __proto__ 是对象特有的属性;
  2. prototype 用于实现继承,它包含了可以由该函数的实例共享的属性和方法。而 __proto__ 用于查找原型链,它指向该对象的构造函数的原型对象;
  3. prototype 可以通过函数名访问到它(显式原型),而 __proto__ 是隐式原型,可以通过对象的实例来访问它。
// 1. 声明一个构造函数 Person
function Person(name) {
  this.name = name;
}

// 2. 为构造函数的原型增加 sayHello 方法
Person.prototype.sayHello = function() {
  console.log('Hello, ' + this.name);
};

// 3. person1 为构造函数 Person 的实例对象
const person1 = new Person('Alice');

// 4. 实例对象的隐式原型指向构造函数的原型
console.log(person1.__proto__ === Person.prototype); // true

// 5. 构造函数的原型上的构造函数指向构造函数本身
console.log(Person.prototype.constructor === Person); // true

person1.sayHello(); // 输出:Hello, Alice
  • 由 5 可得:在这里插入图片描述

  • 原型链:
    在这里插入图片描述

第一个是 fun 是实例对象 proto 等价于 [[prototype]],
第二个是 [[prototype]] 的 proto 是 Person 这个对象(注意不是函数/类)他的另一个身份是函数)
第三个是 Person 的 proto 是 Object,是由 Object.create 或 {} 或 new Object() 产生的

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

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

相关文章

leetcode一道比较难的链表题

今天还是继续来分享我们的链表题,这个题目有点难,主要是思路比较难想,但是如果沥青思路写起来就比较简单了(我乱讲的) 随机链表的复制 这个是题目的描述,大家也可以在链接里看,那我把这道题目…

深眸科技聚焦3D机器视觉技术,从技术形态到应用前景实现详细分析

机器视觉技术的不断升级,使得对二维图像的处理逐渐扩展到了更复杂的三维领域,形成了3D机器视觉。3D机器视觉是机器视觉的重要应用领域之一,通过计算机能够在短时间内处理视觉传感器采集的图像信号,从而获得目标对象的三维信息。 …

通过Cookie和Session来实现网站中登录账号的功能

文章目录 一、Cookie和Session二、基于Cookie和Session实现登录账号的功能2.1步骤一2.2步骤二2.3步骤三2.4总结通过Cookie和Session来实现登录功能2.5运行截图 一、Cookie和Session cookie是http请求header中的一个属性,是浏览器持久化存储数据的一种机制&#xff…

OCR文字识别生成双层PDF,一键解锁文件编辑新技能

在当今信息时代,OCR(Optical Character Recognition)技术已经成为数字化转型中不可或缺的一环。利用OCR技术,我们可以将纸质文档转化为可编辑的电子文档,便于存储、检索和共享。然而,有时候我们需要将识别后…

自考改革过渡期!广东小自考最优解只需要2门笔试

图片来源:广东省考试院* 近期广东教育考试院公布了自考专业调整的相关通知,新的专业考试计划从2026年1月起执行。 这次改革过渡期中有一个重大利好消息,小自考专业笔试统考科目最少只需考2门笔试! 这是为什么呢? 小…

黑洞路由的几种应用场景

第一种在内网中产生环路: 这种核心交换机上肯定写一条默认路由 0.0.0.0 0 10.0.0.1 出口路由要写一条192.168.0.0 16 10.0.0.2 如果出口路由访问一条不存在的内网网段,又或者访问的那台终端停机了,那就会产生三层环路,数据包在…

git命令行操作

git remote update origin --prune 更新本地的git分支保持和远程分支一致 git clone -b develop XXX 拉取某个分支的代码 1、创建一个空文件夹,在其中打开Git Bash Here,输入: git clone 刚刚复制的粘贴过来,回车 2、打开你拉下…

【扩散模型】5、Diffusion models beat GAN | 使用类别引导图像生成

论文:Diffusion models beat GAN on image Synthesis 代码:https://github.com/openai/guided-diffusion 出处:OPENAI | NIPS2021 时间:2021 贡献: 在本文章之前,扩散模型生成的图片已经非常逼真了&am…

SpringBoot 配置进阶

一、ConfigurationProperties 1、 在类定义上 ConfigurationProperties注解,此注解是用来为bean绑定属性。使用步骤如下: 在配置文件 application.yml 中,添加配置信息 servers:ip-address: 127.0.0.1port: 8123创建配置类,并在…

conda环境中pytorch1.2.0版本安装包安装一直失败解决办法!!!

conda环境中pytorch1.2.0版本安装包安装一直失败解决办法 cuda10.0以及cudnn7.4现在以及安装完成,就差torch的安装了,现在torch我要装的是1.2.0版本的,安装包以及下载好了,安装包都是在这个网站里下载的(点此进入&…

python使用selenium做自动化,最新版Chrome与chromedriver不兼容

目前Chrome版本是118.0.5993.118 下方是版本对应的下载地址: chrome版本118: https://download.csdn.net/download/qq_35845339/88510476 chrome版本119: chromedriverlinux64https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testin…

【Linux C IO多路复用】多用户聊天系统

目录 Server-Client mutiplexingServer mutiplexingClient mutiplexing Server-Client 在Linux系统中,IO多路复用是一种机制,它允许一个进程能够监视多个文件描述符(sockets、pipes等)的可读、可写和异常等事件。这样&#xf…

洋子带你赚钱,粉丝有奖任务来啦,最高拿90京东卡

大家好,我是洋子,前段时间CSDN联合阿里云发布了免费试用3种 云服务器的活动任务,每完成一个任务就可以拿到30京东卡,3个任务互相独立,如果3个任务全部完成就可以拿到90京东卡 任务奖励 参与体验大概十几分钟&#xf…

类直径树上贪心

http://cplusoj.com/d/senior/p/SS231109C 场上想到枚举点&#xff0c;然后最大值为高&#xff0c;然后可以求最大值。但是感觉计数会重 计数其实不会重&#xff0c;如图中&#xff0c;红色线段显然比蓝色线段优 所以我们枚举3叉点时没错的 #include<bits/stdc.h> usin…

『亚马逊云科技产品测评』活动征文|AWS 云服务器实例类型及其适用场景详细说明

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 目录 一、AWS 定价计算器 &#xff08;1&#xff09;定价计算器官网 &…

深度学习_10_softmax_实战

由于网上代码的画图功能是基于jupyter记事本&#xff0c;而我用的是pycham,这导致画图代码不兼容pycharm,所以删去部分代码&#xff0c;以便能更好的在pycharm上运行 完整代码&#xff1a; import torch from d2l import torch as d2l"创建训练集&创建检测集合"…

使用合成数据训练语义分割模型

计算机视觉应用现在在各个科技领域无处不在。 这些模型高效且有效&#xff0c;研究人员每年都会尝试新想法。 新的前沿是试图消除深度学习的最大负担&#xff1a;需要大量的标记数据。 正如本文所述&#xff0c;此问题的解决方案是使用合成数据。 从这些研究中获益最多的计算机…

ros1 模拟客户端生成小乌龟服务请求生成小乌龟

模拟客户端生成小乌龟服务请求生成小乌龟 一、话题模型二、创建功能包三 创建客户端Client代码四 配置CMakeLists.txt编译规则&#xff1a;五 测试启动ros 主服务启动小乌龟的服务启动模型客户端服务 一、话题模型 Sever端是海龟仿真器/turtlesim&#xff0c;Client端是待实现…

Android 13.0 Launcher3 app图标长按去掉应用信息按钮

1.前言 在13.0的rom定制化开发中,在Launcher3定制化开发中,对Launcher3的定制化功能中,在Launcher3的app列表页会在长按时,弹出微件和应用信息两个按钮,点击对应的按钮跳转到相关的功能页面, 现在由于产品需求要求禁用应用信息,不让进入到应用信息页面所以要去掉应用信息…

BigDecimal使用的时候需要注意什么?

BigDecimal只要涉及到浮点数运算都会用到BigDecimal&#xff0c;并且面试的时候经常会问到&#xff0c;那么BigDecimal使用的时候需要注意什么&#xff1f; 目录 1.为什么不能用浮点数表示金额&#xff1f;2.十进制转换二进制3.科学记数法4.IEEE 7545.在线浮点数转换二进制6.原…
最新文章