前端面试常考 | js原型与原型链

news2024/12/26 3:12:45

文章目录

  • 一. 什么是原型?
  • 二. 什么是原型链?


一. 什么是原型?

在js中所有的引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象。
而在js中的引用类型包括:Object,Array,Date,Function
而所有函数都有一个prototype(原型)属性,属性值是一个普通的对象,也被称为原型对象
所有引用类型的__proto__属性指向它构造函数的prototype:

var a = [1,2,3];
a.__proto__ === Array.prototype; // true

那么原型有什么作用呢?

  1. 可以存放一些属性和方法:
Array.prototype.hello=function(){
	console.log("hello")
}
arr = [1, 2, 3]
arr.hello() // hello
  1. 在javaScript中实现继承:
    function Father(){
            this.firstName="李";
        }
        var father=new Father();
        Father.prototype.lastName="名";
        function Son(){
            this.firstName="张";
            this.sex="男";
        }
        // 子类原型继承父类的实例
        Son.prototype=father;
        var son=new Son();
        console.log(son.firstName,son.lastName,son.sex)

二. 什么是原型链?

当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链
注意: 如果最顶层还找不到的话就会返回null
列如我们有如下代码:

		Object.prototype.age = 18
        function Person(name) {
            this.name = name;
        }

        var preson = new Person('nt');
        console.log(preson.name); // nt
        console.log(preson.age); //18

在这里插入图片描述

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

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

相关文章

基于K8s的DevOps平台实践(二)

文章目录1. 流水线入门🍑 流水线基础语法🍑 脚本示例🍑 脚本解释🍑 Blue Ocean2. Jenkinsfile实践🍑 演示一🍑 演示二🍑 演示三🍑 演示四🍑 总结3. 多分支流水线实践&…

BEV视觉3D感知算法梳理

1. 基于BEV空间的自动驾驶感知任务 最近,基于BEV空间下的感知任务已经涌现出了众多优秀算法,并在多个自动驾驶公开数据集(KITTI,Waymo,nuScenes)上取得了非常不错的成绩。根据自动驾驶汽车上安装的传感器类…

【从零开始学习深度学习】37. 深度循环神经网络与双向循环神经网络简介

目录1. 深度循环神经网络2. 双向循环神经网络总结1. 深度循环神经网络 之前介绍的循环神经网络只有一个单向的隐藏层,在深度学习应用里,我们通常会用到含有多个隐藏层的循环神经网络,也称作深度循环神经网络。下图演示了一个有LLL个隐藏层的…

数字化时代,全方位解读商业智能BI

商业智能BI是一种通用的数据类技术解决方案,不会因为行业BI没有进行针对性开发而出现不适配、无法使用的情况。同时,也正因为商业智能BI核心是数据,只要企业有数据沉淀,不管是哪些行业BI商业智能都能发挥出作用。 不过考虑到不同…

文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具

文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/128438303 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

portraiture2023智能磨皮修饰滤镜插件中文版

在人像后期修图的时候免不了需要进行磨皮处理,很多人在挑选磨皮软件的时候都不知道该如何选择,今天的文章就来带大家看看磨皮软件哪个好,能磨皮的修图软件和插件!借助磨皮软件即使是新手也能做出高级的人像图片,下面挑选了几款好用…

Java 并发编程知识总结【五】

6. 线程中断与 LockSupport 6.1 线程中断机制 大厂(蚂蚁金服)面试题: 什么是中断? 首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.…

Exynos_4412——中断控制器

目录 一、中断控制器 中断控制器的作用: 二、Exynos_4412下的中断控制器 它支持三种类型的中断 可以编程设置: 三、中断控制器详解 四、中断控制器编程 一、中断控制器 外设产生的中断信号,先要经过中断控制器,中断是异常…

如何解决软件项目管理中的冲突?

1、项目干系人间的良好沟通 项目干系人之间保持良好的沟通交流,是减少项目管理中冲突的重要手段。甲乙双方签订合同后,为保障项目的成功,在项目发生矛盾和困难时,需要双方相互理解和沟通,共同协商解决问题。 为了及时解…

Git(八) - IDEA 集成 GitHub

一、设置 GitHub 账号 二、分享工程到 GitHub 来到GitHub中发现已经帮我们创建好了git-test的远程仓库。 三、push 推送本地库到远程库 注意:push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致, push的操作是会被拒绝的…

go 性能分析pprof和trace

runtime/pprof:采集程序(非 Server)的运行数据进行分析,用于可结束的代码块,如一次编解码操作等net/http/pprof:采集 HTTP Server 的运行时数据进行分析。用于不可结束的代码块,如 web 应用等 使…

​工程师如何对待开源

工程师如何对待开源 本文是笔者作为一个在知名科技企业内从事开源相关工作超过 20 年的工程师,亲身经历或者亲眼目睹很多工程师对待开源软件的优秀实践,也看到了很多 Bad Cases,所以想把自己的一些心得体会写在这里,供工程师进行…

linux的shell的概述

Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Ke…

各种颜色的代码

颜色代码对照表如下: 关于16进制颜色代码: 这有必要了解一颜色系统的概念: RGB:RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的&a…

MySQL的一些有意思的指令和函数

这个里面我准备记录一些比较有意思的MySQL的指令和函数,当然使用函数的时候我们要注意,会不会因为函数导致不走索引,走全表扫描的情况。 因为对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树…

文本分类(LSTM+PyTorch)

本文的配套代码已上传至github,链接在文末,同时附带中文数据集。 一、传统方法的基本步骤 预处理:首先进行分词,然后是除去停用词;将文本表示成向量,常用的就是文本表示向量空间模型;进行特征…

回调函数、qsort函数、sort函数与lambda表达式

目录 目录 1、回调函数 2、sort函数 3、lambda表达式 4、qsort与sort函数使用lambda表达式 1、回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一 个函数,当这个指针被用来调用其所指向的函…

凝心聚力 开源共建 | 统信软件参与成立OpenKunlun开源固件社区

11月22日,统信软件携手国内固件厂商、处理器厂商、外设板卡厂商等数十家产业同仁参与共建的OpenKunlun开源固件社区正式成立! OpenKunlun社区是在自愿、开源、平等和协作的基础上,由基础软硬件企业、高等院校、个人开发者共同参与的非营利性开…

STM32——STM32中断系统与EXTI外部中断

文章目录一、中断系统二、STM32中断系统三、NVIC(嵌套中断向量控制器)NVIC基本结构NVIC优先级分组四、EXTI(外部中断)EXTI简介EXTI基本结构AFIO复用IO口EXTI框图五、对射式红外传感器计次电路设计关键函数EXTI库函数文件&#xff…

SpringMVC与SpringBoot响应请求的流程

SpringMVC是基于Servlet的MVC模型,Model:一个或多个javabean对象,用于存储数据和业务逻辑;View:一个或多个jsp页面,拿到控制器提交的数据为模型提供数据显示;Controller:一个或多个s…