先来一张图看看几个名词的关系 构造函数、原型、实例

原谅我的狂草字体,我手写比用电脑画快。

今天我们只说原型链,所以接下来我就围绕着原型链的几个部分说起。

这个大家都很熟悉了,首字母大写的函数我们都可以作为构造函数,不是说小写的就不能new,也是可以的,暂时说成约定俗成吧!

        // 构造函数function Fn() {}//原型对象console.log(Fn.prototype)//newlet fn = new Fn() //实例console.log(fn)

代码部分结束了,今天我们就用这4行代码描述一下上图也就是原型链的来龙去脉。

每个函数都有一个属性prototype,借用**Function.prototype** 属性存储了 Function 的原型对象。

验证了我草图构造函数.prototype指向原型对象

完整的log看一下

实例.__proto__也指向原型对象

从log里也能看出来


实例原型的constructor指向构造函数

最后再说构造函数 new关键字生成实例

手绘图说完了,我们说正题 原型链,为什么再说原型链之前先画了一个草图,为了帮助预热理解。

每一个原型对象都有一个__proto__属性,这个是我们在代码中继承的关键,也是众多面试官所问的什么是原型链

上图可以看到,第一次__proto__找到了原型对象,第二次__proto__找到了Object实例对象,第三次null查找结束。

我们平时开发中用到了__proto__去查找链条中我们继承的方法和属性都在prototype(原型)上,所以不能在Fn.prototype = xxx操作,这样链条就会中断,只能在原型上扩展属性。

明天继续聊继承!

欢迎吐槽!

Javascript 原型链相关推荐

  1. javascript原型链中 this 的指向

    为了弄清楚Javascript原型链中的this指向问题,我写了个代码来测试: var d = {d: 40};var a = {x: 10,calculate: function (z) {retu ...

  2. 深度解析JavaScript原型链

    深度解析JavaScript原型链 文章目录 深度解析JavaScript原型链 前言 JavaScript原型链,这里只分享我自己的见解 一.原型链是什么 二.心得 三图解 总结 前言 JavaSc ...

  3. JavaScript原型链污染攻击

    前言 最近在看js的时候看到p神的一篇关于js原型链污染的文章,学习一下. 下面转自p神:深入理解 JavaScript Prototype 污染攻击 还有一篇案例关于js原型链污染的ctf题:从一道 ...

  4. JavaScript 原型链和继承面试题

    JavaScript 原型链和继承问题 JavaScript 中没有类的概念的,主要通过原型链来实现继承.通常情况下,继承意味着复制操作,然而 JavaScript默认并不会复制对象的属性,相反,Ja ...

  5. JavaScript 原型链常用方法

    JavaScript 原型链常用方法 对象属性类型 数据属性 Configurable(表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性) En ...

  6. 技术分享经典 javaScript原型链面试题

    技术分享 javaScript原型链 一个小题目 前置知识 变量提升和函数提升 this指针的指向 原型链是什么 new操作符的工资流程 一个小题目 今天我们部门的技术分享上出现了这样一段代码: fu ...

  7. 如何理解JavaScript原型链

    如何理解JavaScript原型链 实例对象与原型对象的关系 构造函数.原型对象和实例对象之间的关系 原型链结构图 函数在原型链中的结构 原型链的理解和总结 实例对象与原型对象的关系 构造函数.原型对 ...

  8. JavaScript原型链以及Object,Function之间的关系

    JavaScript里任何东西都是对象,任何一个对象内部都有另一个对象叫__proto__,即原型,它可以包含任何东西让对象继承.当然__proto__本身也是一个对象,它自己也有自己的__proto ...

  9. 理解JavaScript原型链

    JavaScript中的每个对象都有一个prototype属性,我们称之为原型,而原型的值也是一个对象,因此它也有自己的原型,这样就串联起来了一条原型链,原型链的链头是object,它的prototy ...

  10. JavaScript原型链的理解

    一.原型链的概念 JavaScript是一门面向对象的编程语言,JavaScript 中的所有事物都是对象,并且对象与对象之间不是彼此独立的,而是有"继承"关系的. 这种" ...

最新文章

  1. 【转】Spring 4.x实现Restful web service
  2. Android WiFi热点完全研究(自定义创建、跳转系统界面设置、读取配置、切换,Android6.0适配)...
  3. 在windows下使用putty登陆linux
  4. java编程数据溢出问题_Java数据溢出代码详解
  5. 44response对象
  6. terminal mysql 停止_转载MySQL之终端(Terminal)管理MySQL
  7. TCGA三个在线可视化网站
  8. 视觉SLAM算法框架解析(3) SVO
  9. C++串口交互数据监听方法与虚拟串口工具安装
  10. cocos2d-js adblock插件冲突
  11. jdk11 下载地址
  12. html语言弹出窗口代码,网页弹出窗口代码
  13. ShareX(截图工具) 绿色版,功能异常强大
  14. 华三模拟器 HCL v5.3.0 使用第三方控制台(SecureCRT、XShell、MobaXterm)教程
  15. CYQ.Data、ASP.NET Aries 百家企业使用名单
  16. 瑞吉外卖项目剩余功能补充
  17. 基于FPGA数字时钟的设计(附源码)
  18. LDA + SVM 文本分类
  19. 如何利用福禄克FLUKE 718 校准压力开关
  20. VBoxGuestAdditions下载地址

热门文章

  1. Linux系统编程30:进程信号之产生信号的四种方式(Core Dump,kill,raise)
  2. c++ winpcap开发(6)
  3. Shell离线脚本安装mysql、更新密码
  4. Linux 查看 占用内存最多 占用cpu最多 程序(类似top,监视)
  5. SQLAlchemy 多态进阶(__mapper_args__ )、多对多标签
  6. python调用sklearn中朴素贝叶斯踩坑
  7. css选择器中:first-child与:first-of-type的区别
  8. 作业:Regular Expression
  9. GDKOI2018发烧记
  10. JavaScript 获得当前日期+时间