JavaScript 原型与原型链
原型与原型链
要讨论原型与原型链,就要先了解什么是 构造函数 ,构造函数与普通函数没有太大的区别,使用 new关键字 创建实例对象的函数,就叫做构造函数。
在js中,每一个函数类型的数据都有一个 .prototype 的属性,这个属性指向一个对象,叫做 原型对象 。
原型对象有一个属性叫做 constructor 的属性,指向他的 构造函数 。
在使用构造函数构造不同的实例对象时,有些 属性 和 方法 是相同的,如果每个实例对象都创建这些相同的属性,有些浪费,可以存在原型对象里以共享。这也是原型对象最重要的作用。
对于这些共有的属性和方法,实例对象可以直接用 点运算符 访问,原因是实例对象在本身找不到对应的属性和方法时,会查找其构造函数的原型对象。所以可以用 实例.constructor 来查看该实例的构造函数。
如果实例本身没有该属性和方法,其构造函数的原型对象也没有,会继续往原型对象上去寻找,原型链概念就呼之欲出了。
先了解 显式原型 和 隐式原型
显式原型 是用 prototype 属性查找原型,是函数类型数据的属性,函数可以用这个方法,构造函数也可以用,找到的是这个构造函数的原型对象。
隐式原型 是用 proto 属性查找原型,是对象类型数据的属性,对象可以用这个方法,实例对象也可以用,找到的是这个实例对象的构造函数的原型对象。
原型对象 也是一个对象,也有 proto 属性,在js中,对象的构造函数是 Object() ,所以其原型对象是 Object.prototype 。
Object.prototype 也是一个对象,不过 Object.prototype 比较特殊,没有原型对象,或者说其_proto_指向的是 null 。所以 Object.prototype 是原型链的尽头。
如果实例本身没有该属性和方法,则寻找实例的原型对象,如果实例的原型对象也没有,则继续寻找该原型对象的原型对象,直至null。这样的顺着 proto 寻找的链状结构就叫做 原型链 ,也叫做 隐式原型链 。
js中,函数也是一种对象,而函数的构造函数为 Function() ,所有函数都可以看作是 Function() 的实例对象,而 Function() 本身也是函数,所以 Function() 是自己的实例对象。函数的 proto 是 Function.prototype 。 Function.prototype 的原型对象是 Object.prototype 。
相关文章:
JavaScript 原型与原型链
原型与原型链 要讨论原型与原型链,就要先了解什么是 构造函数 ,构造函数与普通函数没有太大的区别,使用 new关键字 创建实例对象的函数,就叫做构造函数。 在js中,每一个函数类型的数据都有一个 .prototype 的属性&am…...
Spring Boot实现简单的Oracle数据库操作
使用到的技术: 1. Spring Boot:用于简化Spring应用的开发。 2. Dynamic DataSource:实现动态多数据源的访问和切换 3. Oracle JDBC Driver:与Oracle数据库进行连接和交互。 4. Mybatis-Plus:简化SQL映射和数据库访问。…...

微软发布 Phi-3.5 系列模型,涵盖端侧、多模态、MOE;字节 Seed-ASR:自动识别多语言丨 RTE 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...

笔记:Echarts柱状图 实现滚轮条 数据太多
效果👇👇👇 配置:👇 let option {dataZoom: [{type: "slider",show: true,zoomLock: true,start: 0,end: 20,bottom: 60,height: 10,textStyle: {color: "transparent",fontSize: 9,},fillerColo…...

嵌入式学习day17(数据结构)
大纲 数据结构、算法数据结构: 1. 线性表:顺序表、链表(单向链表,单向循环链表,双向链表,双向循环链表)、栈(顺序栈,链式栈)、队列(循…...

网站怎么做敏感词过滤,敏感词过滤的思路和实践
敏感词过滤是一种在网站、应用程序或平台中实现内容审查的技术,用于阻止用户发布包含不适当、非法或不符合政策的内容。我们在实际的网站运营过程中,往往需要担心某些用户发布的内容中包含敏感词汇,这些词汇往往会导致我们的网站被用户举报&a…...

【峟思】如何使用投入式水位计才能确保测量准确性
在水利、环保、工业监测等众多领域,水位测量是一项至关重要的任务,它不仅直接关系到水资源的合理利用与保护,还影响到防洪、供水、排水等多个方面的安全与效率。投入式水位计作为一种常见的水位测量工具,以其结构简单、测量准确、…...

供应链管理系统(SCM) —— 企业物流的智能枢纽
SAP 供应链管理系统以打造数字化和集成化的供应链管理平台为使命,将传统的仓储管理系统、制造执行系统、产品管理系统等软件进行升级和上云管理,为企业提供面向客户、合作伙伴及员工的数字化SCM系统平台。 SAP SCM系统从设计到运维,全面优化供…...
计算机视觉(CV)技术的优势和挑战。
计算机视觉(CV)技术在许多领域中具有广泛的应用,并且具有一些优势和挑战。 优势: 1. 高效性:CV技术能够快速处理大量的图像和视频数据,以实现实时的分析和决策。 2. 自动化:CV技术可以自动化地…...

数据库MySQL多表设计、查询
目录 1.概述 2.一对多 3.一对一 4.多对多 5.多表查询 5.1内连接 5.2外连接 5.3子查询 1.概述 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个…...

基于vue框架的北城招聘管理平台题目7lly3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:用户,企业,企业信息,职位类型,职位信息,简历信息,职位应聘,求职意愿,面试信息,录取信息,实习信息,冻结信息,解冻信息 开题报告内容 基于Vue框架的北城招聘管理平台 开题报告 一、引言 随着互联网的飞速发展和企业对人才需求的不断增…...

详讲C#中如何存储当前项目的设置-超级简单省事
我们在编写软件的时候总有一些配置数据需要保存,比如用户选择的偏好设置,又如软件所用到的数据库文件等。我们有很多中方式都可以保存,比如直接保存在某个文本文件,或者ini文件中,其实最简单的办法是保存在项目的资源文…...
【QT文件操作】---xml文件读取
XML(可扩展标记语言,eXtensible Markup Language)是一种用于存储和传输数据的文本格式,广泛用于配置文件、数据交换和文档表示。XML 文件具有明确的结构和标记,这使得它能够描述复杂的层次结构和数据关系。 xml和html…...

科研软件 | Diamond 4.6 安装教程
软件介绍 Diamond一个化学专业软件。它是一款在原子水平实现晶体结构可视化的软件,包括分子和聚合物扩展、多面体、搜索结构数据、自动和批量创建结构图片等功能,支持晶体结构着色和渲染以及批注。 软件下载 https://pan.quark.cn/s/37214b5bec7c 软…...

利用keepalived达成服务高可用
官方网站Keepalived for Linux 1.keepalived简介 vrrp 协议的软件实现,原生设计目的为了 高可用 ipvs 服务 功能: 基于 vrrp 协议完成地址流动 为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 ) 为 ipvs 集群的各 RS 做健康状态检测 …...

Dumpy:一款针对LSASS数据的动态内存取证工具
关于Dumpy Dumpy是一款针对LSASS数据的动态内存取证工具,该工具专为红队和蓝队研究人员设计,支持重新使用打开的句柄来动态转储 LSASS。 运行机制 Dumpy可以动态调用 MiniDumpWriteDump 来转储 lsass 内存内容。此过程无需打开 lsass 的新进程句柄&…...

TinyEngine是什么?
TinyEngine 是 OpenTiny 项目下的一个开源低代码引擎,旨在帮助开发者快速构建应用程序。它提供了可视化搭建页面的能力,支持在线实时构建和二次开发或集成,适用于多种场景的低代码平台开发,例如资源编排、服务端渲染、模型驱动、移…...

FPGA跨时钟域处理
文章目录 一、为什么要做跨时钟域处理二、单bit信号从慢时钟到快时钟处理2.1 使用同步寄存器链(打两拍)2.2 仿真代码编写2.3 仿真结果观察 三、单bit信号从快时钟域到慢时钟域处理3.1 使用脉冲展宽3.2 仿真代码编写3.3 仿真结果观察 四、在任意时钟域跨单bit信号4.1 使用握手协…...

【Docker深入浅出】Docker镜像
文章目录 一. Docker镜像简介二. Docker镜像详解1. 镜像和容器的关系2. 镜像通常比较小3. 拉取镜像4. 镜像命名4.1. 镜像仓库服务4.2. 官方和非官方镜像仓库4.3. 镜像的命名和标签 5. 为镜像打多个标签6. 过滤镜像内容6.1. 虚空镜像6.2. 删除虚空镜像6.3. 过滤器与格式化输出 7…...

“LOCAL_LISTENER”参数导致业务无法连接数据库,文末附Oracle连接故障检查监听的排查流程
1. 背景及问题 今天在Oracle BCV技术[1]做数据同步,建立生产库的测试库,需要DBA配合同步前后的停库和起库。在同步完起库后,有部门反应同步好的测试库连接不上去。 2. 问题排查 以我当前的知识储备,能想到的可能就是以下几点进…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...