1.原型链是什么?

原型指的是原型属性,原型也是一个对象。

当访问一个对象的属性时,如果这个对象内部不存在这个属性,那么它就会去它的原型对象里找这个属性,这个原型对象又会有自己的原型,于是就这样一直找下去,也就是原型链的概念。

2.原型链的终点是什么?为什么呢?

原型链的终点是 null ,因为 Object.prototype.__proto__指向 null
那为什么是null呢?
首先要明确一点,原型链上的所有节点都是对象,
另外,规范要求原型链必须是有限长度的
(从任一节点出发,经过有限步骤后必须到达一个终点。显然也不能有环。)
那么,应该用什么对象作为终点呢?很显然应该用一个特殊的对象。
我们假设以Object.prototype为终点的话,取它的原型Object.prototype.proto;

取一个对象的属性时,可能发生三种情况:
如果属性存在,那么返回属性的值。
如果属性不存在,那么返回undefined。
不管属性存在还是不存在,有可能抛异常。

我们已经假设Object.prototype是终点了,所以看起来不能是情况1。
另外,抛出异常也不是好的设计,所以也不是情况3。
那么情况2呢,它不存在原型属性,返回undefined怎么样?也不好,因为返回undefined一种解释是原型不存在,但是也相当于原型就是undefined。这样,在原型链上就会存在一个非对象的值。

所以,最佳选择就是null。一方面,你没法访问null的属性,所以起到了终止原型链的作用;另一方面,null在某种意义上也是一种对象,即空对象,因为null一开始就是为表示一个“空”的对象存在的。这样一来,就不会违反“原型链上只能有对象”的约定。

所以,“原型链的终点是null”虽然不是必须不可的,但是却是最合理的。

前端面试十有九问之原型链相关推荐

  1. 前端面试技巧和注意事项_前端面试百分之九十九过的技巧

    2020最全的前端面试指南,一个多月 1.8w 字的面试经验积累,凭借它最终成功入职大厂-- 今年的金三银四刚好赶上疫情,很多大公司都停止招聘甚至裁员,想跳槽的小伙伴被打的措手不及. 需求减少要求肯定 ...

  2. 前端vue适配不同的分辨率_前端面试时,被问到项目中的难点有哪些?

    在每个前端求职者的面试过程中,一定都有过被面试官问到项目中的难点,而答不上来的情况.为了让大家在前端面试前准备得更加充足,小编准备了一些易被忽视且难度较高的前端面试题,希望可以帮助大家更加顺利完成求职 ...

  3. [前端面试]HTTP相关常问问题

    [前端面试]HTTP常问问题 HTTP(HyperText Transfer Protocol)是一种用于在网络上传输超文本的协议.面试中,可能会有以下常见的问题: HTTP 的工作原理 HTTP 的 ...

  4. 前端面试知识点总结JavaScript基础之原型和原型链(二)

    一.JavaScript基础 原型和原型链 1.理解原型设计模式以及JavaScript中的原型规则 设计模式 1.工厂模式:在函数内建立一个对象,给对象赋予属性及方法再将对象返回设计模式. func ...

  5. 前端开发之闭包、继承、原型链

    闭包.原型链和继承 闭包 闭包的概念 官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 闭包是指有权访问另一个函数作用域中的变量 ...

  6. 前端面试hr经常会问的问题

    文章目录 前言 1.自我介绍 2.为什么你要离职? 3.工作经历 4.职业规划 5.优点.缺点 6.还有什么要问的 总结 前言 这里记录了一些面试中hr或者项目负责人经常会问的一些问题,可以提前参考参 ...

  7. Android技术功底不够,面试十家九家难,面霸究竟是怎样炼成的?

    最近在网上看许多面经的文章,有拿到Offer的,也有凉凉的,这些文章中都有一个共同的特点,就是单单的只有面试题目.而没有面试过程中需要注意的细节和面试心得.导致有些面试者们在面试来临,就去盲目的去刷这 ...

  8. web前端面试十大 难点问题

    1.什么是闭包?闭包的用途是什么?闭包的缺点是什么? 定义: 闭包是函数和函数内部能访问到的变量的总和. 具体实现:在函数A中声明了函数B,并在函数B中使用了A内部的局部变量或形参,函数B以返回值或对 ...

  9. 那些巨头公司的前端面试都喜欢问些什么?

    在过去的几年里,我在亚马逊和雅虎面试过很多专注于前端开发的Web开发者和软件工程师,在这篇文章中,我想分享一些面试技巧,帮助候选人为面试做好准备. 免责声明--本文并非旨在列出在前端面试中可能会被问到 ...

最新文章

  1. 字节AI Lab总监李磊离职加入UCSB,马维英后又一大牛回归学界
  2. 读取手柄_中高端游戏手柄比选,北通宙斯才是游戏的最佳拍档
  3. 009_TreeSet对实现了Comparable接口的对象排序
  4. python连接池原理_python redis之连接池的原理
  5. 留恋 nyoj 854
  6. android 状态栏、标题栏、屏幕高度
  7. vue理由设置_在你的下一个Web应用中使用Vue.js的三个理由
  8. DecimalFormat
  9. 首发!来自你的Java同行的调查报告
  10. JupterNoteBook
  11. python中怎么调整代码字体格式_PyCharm中代码字体大小调整方法
  12. Mac OSX 鼠标键盘事件的监听和模拟
  13. 《通信软件开发与应用》课程结业报告
  14. 【VHDL】分频器设计要求:25分频,占空比为50%
  15. excel两列数据对比找不同_快速找出Excel表格中两列数据不同内容的3种方法!
  16. Ceres 曲线拟合
  17. 新型传感器将改变大脑控制的机器人技术
  18. 【Python】解决CNN中训练权重参数不匹配size mismatch for fc.weight,size mismatch for fc.bias
  19. 知乎首页实战之背景与大体布局
  20. 通俗理解面向对象和面向过程+编程思想

热门文章

  1. mysql 5.7版本的默认密码修改
  2. cas29162-73-0/5,10,15,20-四(4-溴苯基)卟啉/meso-Tetra (p-bromophenyl) porphine/分子式:C44H26Br4N4/分子量:930.32
  3. keyboard hook
  4. 企业收集客户数据属违规?区块链的隐私保护计算可以防止
  5. 理解nacos 服务治理(注册中心)、Nacos简介、下载与配置持久化到Mysql
  6. IsBackground
  7. 一文带你全面了解,自动驾驶数据闭环之——大数据管理
  8. secrurecrt experenced a fatal error and must close.A crash dump file has been created in
  9. 深度科技携手华为,生态共建行动第一
  10. VSCode调试Nodejs