Javascript 原型链
先来一张图看看几个名词的关系 构造函数、原型、实例
原谅我的狂草字体,我手写比用电脑画快。
今天我们只说原型链,所以接下来我就围绕着原型链的几个部分说起。
这个大家都很熟悉了,首字母大写的函数我们都可以作为构造函数,不是说小写的就不能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 原型链相关推荐
- javascript原型链中 this 的指向
为了弄清楚Javascript原型链中的this指向问题,我写了个代码来测试: var d = {d: 40};var a = {x: 10,calculate: function (z) {retu ...
- 深度解析JavaScript原型链
深度解析JavaScript原型链 文章目录 深度解析JavaScript原型链 前言 JavaScript原型链,这里只分享我自己的见解 一.原型链是什么 二.心得 三图解 总结 前言 JavaSc ...
- JavaScript原型链污染攻击
前言 最近在看js的时候看到p神的一篇关于js原型链污染的文章,学习一下. 下面转自p神:深入理解 JavaScript Prototype 污染攻击 还有一篇案例关于js原型链污染的ctf题:从一道 ...
- JavaScript 原型链和继承面试题
JavaScript 原型链和继承问题 JavaScript 中没有类的概念的,主要通过原型链来实现继承.通常情况下,继承意味着复制操作,然而 JavaScript默认并不会复制对象的属性,相反,Ja ...
- JavaScript 原型链常用方法
JavaScript 原型链常用方法 对象属性类型 数据属性 Configurable(表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性) En ...
- 技术分享经典 javaScript原型链面试题
技术分享 javaScript原型链 一个小题目 前置知识 变量提升和函数提升 this指针的指向 原型链是什么 new操作符的工资流程 一个小题目 今天我们部门的技术分享上出现了这样一段代码: fu ...
- 如何理解JavaScript原型链
如何理解JavaScript原型链 实例对象与原型对象的关系 构造函数.原型对象和实例对象之间的关系 原型链结构图 函数在原型链中的结构 原型链的理解和总结 实例对象与原型对象的关系 构造函数.原型对 ...
- JavaScript原型链以及Object,Function之间的关系
JavaScript里任何东西都是对象,任何一个对象内部都有另一个对象叫__proto__,即原型,它可以包含任何东西让对象继承.当然__proto__本身也是一个对象,它自己也有自己的__proto ...
- 理解JavaScript原型链
JavaScript中的每个对象都有一个prototype属性,我们称之为原型,而原型的值也是一个对象,因此它也有自己的原型,这样就串联起来了一条原型链,原型链的链头是object,它的prototy ...
- JavaScript原型链的理解
一.原型链的概念 JavaScript是一门面向对象的编程语言,JavaScript 中的所有事物都是对象,并且对象与对象之间不是彼此独立的,而是有"继承"关系的. 这种" ...
最新文章
- 【转】Spring 4.x实现Restful web service
- Android WiFi热点完全研究(自定义创建、跳转系统界面设置、读取配置、切换,Android6.0适配)...
- 在windows下使用putty登陆linux
- java编程数据溢出问题_Java数据溢出代码详解
- 44response对象
- terminal mysql 停止_转载MySQL之终端(Terminal)管理MySQL
- TCGA三个在线可视化网站
- 视觉SLAM算法框架解析(3) SVO
- C++串口交互数据监听方法与虚拟串口工具安装
- cocos2d-js adblock插件冲突
- jdk11 下载地址
- html语言弹出窗口代码,网页弹出窗口代码
- ShareX(截图工具) 绿色版,功能异常强大
- 华三模拟器 HCL v5.3.0 使用第三方控制台(SecureCRT、XShell、MobaXterm)教程
- CYQ.Data、ASP.NET Aries 百家企业使用名单
- 瑞吉外卖项目剩余功能补充
- 基于FPGA数字时钟的设计(附源码)
- LDA + SVM 文本分类
- 如何利用福禄克FLUKE 718 校准压力开关
- VBoxGuestAdditions下载地址
热门文章
- Linux系统编程30:进程信号之产生信号的四种方式(Core Dump,kill,raise)
- c++ winpcap开发(6)
- Shell离线脚本安装mysql、更新密码
- Linux 查看 占用内存最多 占用cpu最多 程序(类似top,监视)
- SQLAlchemy 多态进阶(__mapper_args__ )、多对多标签
- python调用sklearn中朴素贝叶斯踩坑
- css选择器中:first-child与:first-of-type的区别
- 作业:Regular Expression
- GDKOI2018发烧记
- JavaScript 获得当前日期+时间