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

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() 是自己的实例对象。函数的 protoFunction.prototypeFunction.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. 问题排查 以我当前的知识储备,能想到的可能就是以下几点进…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...