【前端面试题】原型和原型链-js

  • 原型
  • 原型链

原型

  1. 所有引用类型都有一个__proto__ (隐式原型)属性,属性值是一个对象;
  2. 所有函数都有一个prototype (显示原型)属性,属性值是一个对象;
  3. 所有引用类型的__proto__属性指向它构造函数的prototype,它们其实是同一个对象(下列代码最后一行)
//定义一个构造函数
function Demo() {this.a = 1
this.b = 2
}
//创建一个Demo的实例对象
const d = new Demo()console.log(Demo.prototype) //显示原型属性
console.log(d.__proto__) //隐式原型属性
console.log(Demo.prototype === d.__proto__)  //返回ture

一般通过 构造函数.prototype 来追加属性、方法,实例对象就可以访问了。
好处是当一个构造函数有多个实例对象时,所有实例对象都可以使用,实现代码的复用。

//通过显示原型属性操作原型对象,追加一个x属性,值为99
Demo.prototype.x = 666
console.log(d.x) //返回666

原型链

刚刚说过,原型的属性值是一个普通的对象,那么这个对象又会有__proto__属性,只要有对象就会又有__proto__属性…
那什么时候到头呢?
我们知道,js基本数据类型中的引用类型只有object。所以,最后会到object的__proto__,其值为null。

图片截自小野森森老师的视频

当一个实例对象调用属性或方法时,如果自身没有,则会去原型上找,原型没有则去原型的原型上找,一层一层向上查找形成一个链式结构,称为原型链

【前端面试题】原型和原型链-js相关推荐

  1. 前端面试题精编2020(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新

    文档描述 本文是关注微信小程序的开发和面试问题, 由基础到困难循序渐进, 适合面试和开发小程序. 并有热点框架(vue react node.js 全栈)前端资源以及后端视频资源和源码 并基于前端进阶 ...

  2. 前端面试题 HTML、CSS、JS、Vue、Es6

    第一部分 HTML&CSS整理答案 什么是HTML5? 答:HTML5是最新的HTML标准. 注意:讲述HTML5推出的设计目的,以及现在市场的使用情况,浏览器支持情况等.... 设计目的 H ...

  3. 大前端面试题总结(html+css+js)

    先从我们最熟悉的html+css开始 1.请简述css盒子模型 一个css盒子从外到内可以分成四个部分:margin(外边距),border(边框),padding(内边距),content(内容) ...

  4. 2023前端面试题及答案整理(JS面试题)

    ES6 let / const 全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取? ES6规定,var 命令和 function 命令声明的全局变量 ...

  5. 前端面试题总结(包含答案解析)

    前端面试题总结 css.html部分 1.h5新特征有哪些? 语义化标签,如nav,footer,header,section等 音频.视频API 使用方法 视频使用: <video src=& ...

  6. 2022前端面试题总结

    2022前端面试题整理持续补充中 js JS为什么是单线程? 什么是HTTPS 什么是事件循环 toLocaleString() 方法 vue Object.defineProperty方法(详解) ...

  7. 前端面试题:JS中的原型和原型链

    JS的原型和原型链算是前端面试题的热门题目了,也是参加了几场面试,感觉好多次都被问到对原型和原型链的理解,所以今天也是索性把他给整理出来,一方面方便自己以后复习查看,另一方面也是给大家分享一下我对原型 ...

  8. 前端面试题总结(js、html、小程序、React、ES6、Vue、全栈)

    前端面试题总结(js.html.小程序.React.ES6.Vue.全栈) 文档描述 本文是关注微信小程序的开发和面试问题, 由基础到困难循序渐进, 适合面试和开发小程序. 并有热点框架(vue re ...

  9. web前端面试题完美整理/涵盖html,CSS、JS、浏览器、Vue、React、移动web。

    本篇文章整理总结了一些前端面试题,涵盖面很广,并且面的都是知名大厂,所以这些题还是很有代表性的,都掌握以后一面基础面应该没什么问题,二面也能应付大半,奉上: css相关 更多教程:https://su ...

最新文章

  1. java中的易混问题收集
  2. java源码-AQS机制
  3. wordpress hmailserver等相关 3
  4. 涨知识!提单及运输业务中常用的一些代码、术语及意义!
  5. java运行效率优化_如何优化JAVA代码及提高执行效率
  6. Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解
  7. 打印图形 字母倒三角
  8. UEditor应用 —— 图片上传
  9. pytorch--nn模块(1)
  10. 一个简单的string类,读书看报系列(一)
  11. 分布式监控系统开发【day37】:填充表配置项目(三)
  12. IMX6Q获取序列号方法
  13. 怎样做中国的自由译者
  14. dwm1000 用c语言控制,DWM1000 测距原理简单分析(示例代码)
  15. tomcat到底是干什么用的?白话理解
  16. 什么是MKV文件以及如何打开和播放MKV?
  17. Web前端知识点总结(持续更新中...)
  18. 本地网络适配器里找不到虚拟机VMnet8
  19. Speedoffice(Word)怎样设置页眉页脚高度
  20. 虚拟机类加载机制(类加载过程)

热门文章

  1. 更改Linux系统的主机名(hostname)两种实用的方法
  2. uniapp生成canvas商品海报
  3. vue使用typescript有什么好处,vuetypescript有啥优势
  4. 优秀产品经理的18种能力
  5. 使用树莓派连接笔记本热点
  6. ROS基础学习之ros-tutorials(一)
  7. 3万亿背后 阿里正在造全球通用计算机
  8. 人工学习之预测2023年考研英语答案分布
  9. ORACLE自学教程
  10. 基于Transformer的文本情感分析编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制 + Positional Encoding位置编码)