当前位置: 首页 > news >正文

js-7:javascript原型、原型链及其特点

1、原型
JavaScript常被描述为一种基于原型的语言-每个对象拥有一个原型对象。
当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。
准确的说,这些属性和方法定义在Object的构造器函数(constructor functions)之上的prototype属性上,而非实例对象本身。
举例:
函数可以有属性,每个函数都有一个特殊的属性叫做原型prototype。
在这里插入图片描述
控制台输出:

在这里插入图片描述
上面这个对象,就是原型对象,可以看到,原型对象有一个自有属性,这个属性指向该函数,如下图关系展示:
在这里插入图片描述
2、原型链
原型对象也可能拥有原型,并且从中继承方法和属性,一层一层,以此类推。这种关系通常被称为原型链(prototype chain),它解释了为何一个对象会拥有定义在其他对象种的属性和方法。
在对象实例和它的构造器之间建立一个链接(它是_proto_属性,是从构造函数的prototype属性派生的),之后通过上溯原型链,在构造器中找到这些属性和方法。
举例:
在这里插入图片描述
根据上述代码,可以得到下图:

在这里插入图片描述
分析:
构造函数Preson存在原型对象Preson.prototype
构造函数生成实例对象person,person的_proto_指向构造函数Person原型对象
Preson.prototype._proto_指向内置对象,因为Person.prototype是个对象,默认是由Object函数作为类创建的,而Object.prototype为内置对象
Preson._proto_指向内置匿名函数anonumous,因为Person是个函数对象,默认由Function作为类创建
Function.prototype和Function._proto_同时指向内置匿名函数anonumous,这样原型链的终点就是null

3、总结
首先看几个概念:
_proto_作为不同对象之间的桥梁,用来指向创建它的 构造函数的原型对象的。
在这里插入图片描述
每个对象的_proto_都是指向它的构造函数的原型对象prototype的
在这里插入图片描述
构造函数是一个函数对象,是通过Function构造器产生。
在这里插入图片描述
原型对象本身是一个普通对象,而普通对象的构造函数都是Object
在这里插入图片描述
上面已经说过,所有构造器都是函数对象,函数对象是Function构造产生的。
在这里插入图片描述
Object的原型对象也有_proto_属性指向null,null是原型链的顶端。
在这里插入图片描述
总结:
一切对象都继承自Object对象,Object对象直接继承根源对象null
一切函数对象(包括Object对象),都是继承自Function对象
Object对象直接继承自Function对象
Function对象的_proto_会指向自己的原型对象,最终还是会继承自Object对象

相关文章:

js-7:javascript原型、原型链及其特点

1、原型 JavaScript常被描述为一种基于原型的语言-每个对象拥有一个原型对象。 当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字…...

无涯教程-Perl - continue 语句函数

可以在 while 和 foreach 循环中使用continue语句。 continue - 语法 带有 while 循环的 continue 语句的语法如下- while(condition) {statement(s); } continue {statement(s); } 具有 foreach 循环的 continue 语句的语法如下- foreach $a (listA) {statement(s); } co…...

【贪心算法】leetcode刷题

贪心算法无固定套路。 核心思想:先找局部最优,再扩展到全局最优。 455.分发饼干 两种思路: 1、从大到小。局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。先遍历的胃口&a…...

PyMySQL库版本引起的python执行sql编码错误

前言 长话短说,之前在A主机(centos7.9)上运行的py脚本拿到B主机上(centos7.9)运行报错: UnicodeEncodeError: latin-1 codec cant encode characters in position 265-266: ordinal not in range(256)两个…...

第二章-算法

第二章-算法 数据结构和算法的关系 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法的特性 算法有五个基本特征:输入、输出、有穷性、确定性和可行性。 输入:算法具…...

‘vue’不是内部或外部命令,也不是可运行的程序或批处理文件的原因及解决方法

今天我在用node.js的时候,结果出现如下错误: C:\Users\xiesj> vue -v vue不是内部或外部命令,也不是可运行的程序或批处理文件。 原因: 1、确定npm是否已正确安装? 2、确定vue以及vue-cli已正确安装?…...

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的&#xff0c;一般都是通过API进行操作的。 环境准备 新建Maven项目&#xff0c;导入Maven依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>…...

Qt6之QListWidget——Qt仿ToDesk侧边栏(1)

一、 QLitWidget概述 注意&#xff1a;本文不是简单翻译Qt文档或者接口函数&#xff0c;而侧重于无代码Qt设计器下演示使用。 QListWidget也称列表框类&#xff0c;它提供了一个类似于QListView提供的列表视图&#xff0c;但是它具有一个用于添加和删除项的经典的基于项的接口…...

Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》

一、查看可安装的版本 docker search prom/prometheus 二、拉取镜像 docker pull prom/prometheus 三、查看镜像 docker images 四、书写配置文件-以及创建挂载目录 宿主机挂载目录位置&#xff1a; 以及准备对应的挂载目录&#xff1a; /usr/local/docker/promethues/se…...

Android 数据库之GreenDAO

GreenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架&#xff0c;将 Java 对象映射到 SQLite 数据库中&#xff0c;我们操作数据库的时候&#xff0c;不再需要编写复杂的 SQL语句&#xff0c; 在性能方面&#xff0c;greenDAO 针对 Android 进行了高度优化&#xff0c;…...

kotlin 编写一个简单的天气预报app(六)使用recyclerView显示forecast内容

要使用RecyclerView显示天气预报的内容 先在grandle里添加recyclerView的引用 implementation androidx.recyclerview:recyclerview:1.3.1创建一个RecyclerView控件&#xff1a;在布局文件中&#xff0c;添加一个RecyclerView控件&#xff0c;用于显示天气预报的列表。 这是一…...

jpa Page 1 of 0 containing UNKNOWN instances错误关于like问题的解决记录

导致这个问题的原因很多&#xff0c;这里记录一下我碰到的问题和解决方法。 网上有说时 pageNo要从0开始&#xff0c;我的不是这个问题。 在使用springboot jpa时&#xff0c;发现使用 t.ip like %?5% 语句&#xff0c;如果数据库记录的ip is null时&#xff0c;将查询不到该…...

Python实战之使用Python进行数据挖掘详解

一、Python数据挖掘 1.1 数据挖掘是什么&#xff1f; 数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中&#xff0c;通过算法&#xff0c;找出其中的规律、知识、信息的过程。Python作为一门广泛应用的编程语言&#xff0c;拥有丰富的数据挖掘库&#…...

scala 加载properties文件

利用java.util.Properties加载 import java.io.FileInputStream import java.util.Properties object LoadParameter {//动态获取properties文件可配置参数val props new Properties()def getParameter(s:String,filePath:String): String {props.load(new FileInputStream(f…...

备战秋招012(20230808)

文章目录 前言一、今天学习了什么&#xff1f;二、动态规划1.概念2.题目 总结 前言 提示&#xff1a;这里为每天自己的学习内容心情总结&#xff1b; Learn By Doing&#xff0c;Now or Never&#xff0c;Writing is organized thinking. 提示&#xff1a;以下是本篇文章正文…...

QT中定时器的使用

文章目录 概述步骤 概述 Qt中使用定时器大致有两种&#xff0c;本篇暂时仅描述使用QTimer实现定时器 步骤 // 1.创建定时器对象 QTimer *timer new QTimer(this);// 2.开启一个定时器&#xff0c;5秒触发一次 timer->start(5000); // 3.建立信号槽连接&am…...

【UE4】多人联机教程(重点笔记)

效果 1. 创建房间、搜索房间功能 2. 根据指定IP和端口加入游戏 步骤 1. 新建一个第三人称角色模板工程 2. 创建一个空白关卡&#xff0c;这里命名为“InitMap” 3. 新建一个控件蓝图&#xff0c;这里命名为“UMG_ConnectMenu” 在关卡蓝图中显示该控件蓝图 打开“UMG_Connec…...

【go】GIN参数重复绑定报错EOF问题

文章目录 1 问题描述2 解决&#xff1a;替换为ShouldBindBodyWith 1 问题描述 在 Gin 框架中&#xff0c;当多次调用 ShouldBind() 或 ShouldBindJSON() 方法时&#xff0c;会导致请求体的数据流被读取多次&#xff0c;从而出现 “EOF” 错误。 例如在api层绑定了参数&#x…...

关于MySQL中的binlog

介绍 undo log 和 redo log是由Inno DB存储引擎生成的。 在MySQL服务器架构中&#xff0c;分为三层&#xff1a;连接层、服务层&#xff08;server层&#xff09;、执行层&#xff08;存储引擎层&#xff09; bin log 是 binary log的缩写&#xff0c;即二进制日志。 MySQL…...

我维护电脑的方法

无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后期主人对它的维护也是决定它寿命的重要因素&#xff01; 你日常是怎么维护你的“战友”的呢&#xff0c;维护电脑运行你有什么好的建议吗&#xff…...

AP51656 电流采样降压恒流驱动IC RGB PWM深度调光 LED电源驱动

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源&#xff0c;用于驱动一颗或多颗串联LED 输入电压范围从 5 V 到 60V&#xff0c;输出电流 可达 1.5A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用电流采样…...

Python爬虫的解析(学习于b站尚硅谷)

目录 一、xpath  1.xpath插件的安装  2. xpath的基本使用  &#xff08;1&#xff09;xpath的使用方法与基本语法&#xff08;路径查询、谓词查询、内容查询&#xff08;使用text查看标签内容&#xff09;、属性查询、模糊查询、逻辑运算&#xff09;  &#xff08;2&a…...

python的virtualenv虚拟环境无法激活activate

目录 问题描述&#xff1a; 解决办法&#xff1a; 解决结果&#xff1a; 问题描述&#xff1a; PS D:\pythonProject\pythonProject\DisplayToolLibs\venv\Scripts> .\activate .\activate : 无法加载文件 D:\pythonProject\pythonProject\DisplayToolLibs\venv\Scripts\…...

uniapp中token操作:存储、获取、失效处理。

实现代码 存储token:uni.setStorageSync(token, res.data.result);获取token:uni.getStorageSync(token);清除token&#xff1a;uni.setStorageSync(token, ); 应用场景 在登录操作中&#xff0c;保存token pwdLogin() {....this.$axios.request({url: .....,method: post,p…...

乐鑫科技 2022 笔试面试题

岗位:嵌入式软件实习生。 个人情况:本科双非电子信息工程,硕士华五软件工程研一在读;本科做过一些很水的项目 ,也拿项目搞了一些奖,相对来说嵌入式方向比较对口。 时间线及面试流程 2021.04.02 笔试 题目分为选择题和编程题,选择题二十题,编程题两题; 选择题基本…...

实现UDP可靠性传输

文章目录 1、TCP协议介绍1.1、ARQ协议1.2、停等式1.3、回退n帧1.4、选择性重传 1、TCP协议介绍 TCP协议是基于IP协议&#xff0c;面向连接&#xff0c;可靠基于字节流的传输层协议 1、基于IP协议&#xff1a;TCP协议是基于IP协议之上传输的&#xff0c;TCP协议报文中的源端口IP…...

Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动地区金融平等

流支付正在成为一种全新的支付形态&#xff0c;Zebec Protocol 作为流支付的主要推崇者&#xff0c;正在积极的推动该支付方案向更广泛的应用场景拓展。目前&#xff0c;Zebec Protocol 成功的将流支付应用在薪酬支付领域&#xff0c;并通过收购 WageLink 将其纳入旗下&#xf…...

Qt--动态链接库的创建和使用

写在前面 在Qt的实际开发中&#xff0c;免不了使用和创建动态链接库&#xff0c;因此熟悉Qt中动态链接库的创建和使用对后续的库开发或使用是非常用必要的。 在之前的文章https://blog.csdn.net/SNAKEpc12138/article/details/126189926?spm1001.2014.3001.5501中已经对导入…...

设计模式十二:享元模式(Flyweight Pattern)

当我们需要创建大量相似对象时&#xff0c;享元模式可以帮助我们节省内存空间和提高性能。该模式通过共享相同的数据来减少对象的数量。 在享元模式中&#xff0c;有两种类型的对象&#xff1a;享元&#xff08;Flyweight&#xff09;和非享元&#xff08;Unshared Flyweight&a…...

【LeetCode】88. 合并两个有序数组 - 双指针

这里写自定义目录标题 2023-8-7 22:35:41 88. 合并两个有序数组 双指针 2023-8-7 22:35:41 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int last m n ;while(n > 0){if(m > 0 && nums2[n-1] > nums1[m-1]){nums1[las…...

二级域名网站建设规范/正规seo大概多少钱

许多情况下&#xff0c;如果创建或修改一个文件&#xff0c;系统需要执行某些任务&#xff0c;如果目录中新建了一个文件&#xff0c;程序必须提取这个文件、进行解析、再把它插入到数据库中。在这种情况下&#xff0c;程序必须监控目录的变化。在.NET Framework中&#xff0c;…...

雅安北京网站建设/怎么开个人网站

在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。 以某一频率执行任务linux缺省会启动crond进程&#xff0c;crond进程不需要用户启动、关闭。 crond进程负责读取调度任务并执行&#xff0c;用户只需要将相应的调度脚本写入cron的调度配置文件中。 cron的调度文…...

网站建设及规划方案/百度浏览器网页

亲密---我感觉,可以用和人和事处的时间长短,并用心 难?不去做? 前作业: 1.什么是微服务 将整个项目&#xff0c;按照功能拆分&#xff0c;拆分后能够更容易地部署&#xff0c;扩展&#xff0c;没有技术壁垒 2.微服务用什么优势&#xff0c;go或者py去做&#xff0c;怎么实现 …...

施工企业负责人培训/官网seo关键词排名系统

先从原理上分析切片运算&#xff1a; list的切片&#xff0c;内部是调用__getitem__&#xff0c;__setitem__,__delitem__和slice函数。而slice函数又是和range()函数相关的。 给切片传递的键是一个特殊的slice对象。该对象拥有可描述所请求切片方位的属性&#xff0c;例如&…...

wordpress获取文章url地址/北京今日重大新闻

Axis: 自动生成WSDL的服务描述&#xff1b; OWL-S Api: 可将WSDL与OWL-S File互转&#xff08;通过WSDL2OWL-S 等类&#xff09;&#xff0c;提取 OWL-S File中的ServiceProfile, ServiceModel, and ServiceGrounding用于匹配、组合、调用服务&#xff1b; ProtegeOWL-S Editor…...

傻瓜式网站开发/网站建设策划书范文

一个典型的CPU由运算器,控制器,寄存器等器件组成 内部总线实现CPU内部各个器件之间的联系,外部总线就是地址总线,控制总线等的这些联系CPU和主板上其他器件的联系 8086CPU的所有寄存器是16位的 16位的CPU一次性最多可以处理16位的数据通用寄存器最大宽度为16位(状态寄存器这些…...