三分钟带你了解JS、原型、原型链

news2024/12/25 9:10:05

1.什么是JS?

JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象;
它是基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式;
白话一点说就是网页上面你看到的一些效果可以通过JS来实现。

2.什么是原型?

上面我们有说到JS是基于原型编程的,而在JS之中的每一个对象都是有原型的,即万事万物皆可为对象,也皆有原型。
这样说的话你是不是就发现平时你在开发之中其实也用到了原型的原理,只是你不知道那是原型罢了。


这里简单举例:
比如你定义了一个方法:

function yue(){}

然后将这个方法打印出来如下图所示:
图1

从图中我们可以看出我们定义的一个空方法里面其实是有一些属性的,这些属性都是语言的底层帮我们实现的,只要创建了方法就会自动帮我们生成出来;
其中有一个prototype(中文翻译就是【原型】)属性,它指向原型对象,这样说你是不是就知道什么是原型了。
Prototype属于显示原型;
__proto__属于隐式原型,又名[[Prototype]];

3.什么是原型链?

原型链就是实例对象和原型对象之间的链接,每一个对象都有原型,原型本身又是对象,原型又有原型,以此类推形成一个链式结构;
这样解释是不是有点绕,我们再举例说明一下,如下图:
图2

从图中我们可以看到定义出来的yue(){}这个方法有一个prototype属性,也是对象,既然是对象它也就有原型,那么它自身也会有一个对象,然后就这样不断地继承,层层的找,最终指向 null,这就是原型链。
你看这样解释是不是就清楚多了。

这些只是JS、原型、原型链的一小部分知识,主要是让大家对它们有一个基本的了解,后续有空的话会更深入的写一些关于它们的知识。

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

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

相关文章

算法的时间复杂度及空间复杂度

目录 一、前言 二、时间复杂度 1.时间复杂度定义 2.时间复杂度描述方法 三、实例代码 实例1(取影响最大的项) 实例2(舍去系数) 实例3(不确定大小关系的用max函数取最大) 实例4(常数次的…

【IDEA】每个方法之间如何设置分隔线

修改后效果: 各个方法之间出现了分隔线

大模型LLMs 部分常见面试题答案-基础面

题库来源:GitHub - km1994/LLMs_interview_notes: 该仓库主要记录 大模型(LLMs) 算法工程师相关的面试题 目录 1. Prefix Decoder、Causal Decoder和Encoder-Decoder的区别 1.1 Prefix Decoder 1.2 Causal Decoder 1.3 Encoder-Decoder …

前端包管理工具详解

一、npm包管理工具 1.代码共享方案 我们已经学习了在JavaScript中可以通过模块化的方式将代码划分成一个个小的结构: 在以后的开发中我们就可以通过模块化的方式来封装自己的代码,并且封装成一个工具;这个工具我们可以让同事通过导入的方式…

【多线程面试题十八】、说一说Java中乐观锁和悲观锁的区别

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说一说Java中乐观锁和悲…

单元化架构的思考

银行业“多活”的发展历程 受监管政策的要求,银行一般会在同城、异地或者多地进行数据中心建设,以保证系统的稳定运行,但从目前实际情况来看,“同城双活”目前仍是很多银行采用的主要形式。银行业的“多活”架构在发展过程中存在三…

文件管理怎么清内存?效率提升一倍

定期清理文件管理可以释放存储空间和提高系统性能。随着时间的推移,手机中可能会存储大量无用的数据,例如缓存、垃圾文件等,导致系统运行缓慢。那么如何清理文件管理的内存呢?下面介绍三种方法。 一、搜索无用的文件夹进行清理 1…

钛虎机械臂移植

安装软件 1 安装fcl git clone https://gitee.com/xjEzekiel/fcl.git cd fcl mkdir build cd build cmake .. make sudo make install2 安装octomap sudo apt install ros-melodic-octomap-ros3 其他 sudo apt install ros-melodic-eigen-stl-containers sudo apt install r…

SAP ABAP SALV DEMO

这几天听了翱翔云天的几个分享视频,发现做了这么多年的ABAP,更多的是实现功能,但是在优化和原理层面,还是相当欠缺,虽然在甲方是属于6边形战士的存在(ABAP,BASIS,BW,PO&a…

【React】P2 create-react-app基础操作

文章目录 当前以及未来的开发,一定是:组件化开发如何划分组件React的工程化/组件化开发create-react-app基础运用运用react常用版本一个React项目中,默认会安装 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 当前以及…

生产者-消费者模型

目录 1、生产者-消费者模型是什么 2、Java中的实现 3、应用于消息队列 3.1 引入依赖 3.2 rabbitmq网站新建队列queue 3.3 模块中配置application.yml 3.4 生产者实现类 3.5 单元测试,发送msg到rabbitmq的队列(my_simple_queue) 3.6 消费者实现类 3.7 从ra…

E1基于线性表的图书管理系统

需求分析 【提示:以无歧义的陈述说明程序设计的任务,主要说明内容是程序要做什么。并明确规定:(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能。】 图书信息管理: 定义一个包含图…

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点: UDP框架: UDP函数学习 发送端代码案例如下: 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介: 懒大王敲代码,…

OpenLayers实战,OpenLayers解析渲染TopoJson格式区划边界数据和实现鼠标经过高亮显示区划边界和文字

专栏目录: OpenLayers实战进阶专栏目录 前言 本章使用OpenLayers实现从vue项目中加载assets资源目录中的TopoJson格式数据,解析渲染TopoJson格式行政区划边界数据,并且实现鼠标经过区域高亮显示区划边界和文字的功能。 本章是综合应用,为方便大家理解代码,拆分为简单的…

强化学习中的值函数

一、值函数 几乎所有的强化学习算法都涉及到估计值函数——状态(或状态-动作对)的函数,这些函数估计代理处于给定状态(或在给定状态下执行给定动作)的好坏。这里的“好坏”概念是根据可以预期的未来奖励来定义的&#…

动手学深度学习 - 学习环境配置

学习环境配置 1、安装 Miniconda1.1 下载 miniconda31.2 环境变量配置1.3 安装成功测试1.4 配置文件1.5 使用conda创建、使用、删除环境1.6 conda 常用命令 2、使用 miniconda 安装 d2l2.1 下载 d2l 安装包2.2 安装 d2l 1、安装 Miniconda 参考: https://www.jb51.n…

云尘-JIS-CTF-VulnUpload

继续做渗透 一样给了c段 开扫 存在一个站点 去看看 扫一下吧 第一个flag出来了 存在robots.txt 去看看 admin 页面源代码 第二个flag和账号密码 登入 就一个上传点 这不明显死了哈哈哈哈哈哈哈 直接开喽 上传修改后缀一气呵成 发现只有success 但是我们刚刚robots存在uploa…

十五、redis的使用

目录 一、简介1.1 nosql介绍1.2 redis特性1.3 redis优势1.4 redis应用场景 二、安装2.1 Macos下安装2.2 Linux下安装2.4 客户端连接2.5 切换数据库 三、数据库操作3.1 string类型3.2 键的操作3.3 Hash类型3.4 list类型3.5 set类型3.6 zset类型 四、和python交互4.1 安装redis包…

3.2每日一题(定积分求抽水做工问题)

1、画图,把题目的容器画出来:球形容器,半径为R 2、根据容器的形状进行分析: 抽水的实质是不同深度的水抽出去走的位移是不一样的>抽水的过程 : (1)先考虑深度为 x到xdx 的薄层水抽出去做多少…

草料资料库丨2023年全国消防宣传月资料合集,免费下载

2023年11月9日是第32个全国消防日,国务院安委会办公室决定于11月份在全国开展消防宣传月活动,主题是“预防为主,生命至上”。 结合今年消防安全月相关要求,我们特邀 注册安全工程师 邵悦 为大家整理了2023年全国消防宣传月的资料…