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

news/2024/11/7 21:41:21/

文章目录

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


一. 什么是原型?

在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 = 18function Person(name) {this.name = name;}var preson = new Person('nt');console.log(preson.name); // ntconsole.log(preson.age); //18

在这里插入图片描述


http://www.ppmy.cn/news/9075.html

相关文章

Lc.152 乘积最大子数组

题目链接1 前言翻译成大白话:就是找一个数组,其连续子数组的乘积最大值。2 算法思路:一般求最值的问题首选动态规划。这道题与[LC.53 最大子序和]很类似。我们假设状态转移方程为:它表示以第 i 个元素结尾乘积最大子数组的乘积可是在这里&…

Spring是怎么回事?新手入门就看这篇吧

前言 今天壹哥给大家介绍一套开源的轻量级框架,它就是Spring。在给大家详细讲解Spring框架之前,壹哥先给大家介绍Spring框架的主要内容: Spring的基本概念 Spring核心思想之ioc Spring核心思想之aop Spring框架对事务的支持 在本系列文章…

哪吒S亮相广州车展,定位B级燃油车颠覆者

2022年收官,哪吒汽车宣布全年交付152073台,其中: •哪吒U 51021台; •哪吒V 98847台; •哪吒S 2003台(12月首月交付)。与此同时,在年末的广州车展,哪吒汽车携全系车型参展…

视觉slam中的相机类型

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 顾名思义,视觉 SLAM(又称 vSLAM)使用从相机和其他图像传感器采集的图像。视觉 SLAM 可以使用普通相机(广角…

【小程序】包与数据共享

文章目录使用 npm 包Vant WeappAPI Promise化全局事件共享MobX分包分包概念使用分包独立分包分包预下载使用 npm 包 目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm 包有如下 3 个限制&am…

人工智能期末——第三章确定性推理考前预测

第三章 推理的定义? 根据知识库中的知识,按照某种策略从已知事实出发推出结论的过程 初始证据是什么? 推理前用户提供的信息 中间证据是什么? 推理过程中得到的信息 按照推理的逻辑基础分类? 演绎推理、归纳推…

RHCSE第一天(Linux的例行性工作)

文章目录Linux搭建服务器的准备工作第一章 Linux的例行性工作1.1 单一执行的例行性工作at1.1.1 at命令的实际工作过程1.1.2 at命令详解1.2 循环执行的例行性工作1.2.1 crontab命令的实际工作过程1.2.2 crontab命令详解1.3 实验实验一:定义三分钟之后显示hello实验二…

强化学习的Sarsa与Q-Learning的Cliff-Walking对比实验

强化学习的Sarsa与Q-Learning的Cliff-Walking对比实验Cliff-Walking问题的描述Sarsa和Q-Learning算法对比代码分享需要改进的地方引用和写在最后Cliff-Walking问题的描述 悬崖行走:从S走到G,其中灰色部分是悬崖不可到达,求可行方案 建模中&am…