简述JS原型、原型链
该文是本人对原型和原型链的个人理解,若有错,请指出。
原型
原型:每个构造函数都有一个prototype属性,该属性指向一个object空对象,这个对象就是函数实例的原型对象(也称为原型)。
原型作用:在构造函数的原型上添加属性(方法),则该构造函数的所有实例对象都可以使用原型上的属性(方法)
隐式原型:每个实例对象都有一个__proto__属性,该属性默认指向构造函数的prototype属性,该属性就是隐式原型。
原型与隐式原型的关系:相等(因为它们存放的值都是地址值,而它们存放的地址值相同,所以构造函数的原型===实例对象的隐式原型)
构造函数.prototype === 实例对象.proto //true
由上图左侧代码及右侧图示,假设Fn的实例对象fn要调用方法1,首先在当前实例化对象中查找,找不到,则通过__proto__属性,找到构造函数的原型,从中调用方法1这种。
原型链
所以原型链的定义就是:当访问一个对象的属性(方法)时,先在自身对象中进行查找,若自身对象没有该属性(方法),就通过__proto__属性这条链往上查找,找到返回,若最终没有该属性(方法),则返回undefined,这个串成链的过程就是原型链。
原型链的作用:查找对象的属性(方法)
以下是有关原型链的图示:
图源:https://www.bilibili.com/video/BV14s411E7qf?p=17
简述JS原型、原型链相关推荐
- 简述js原型链_简述js
简述js原型链 (在React 16.8.0之前)((before React 16.8.0)) Yeah, I know that there are terabytes of data avail ...
- JS难点剖析-原型原型链
2019独角兽企业重金招聘Python工程师标准>>> js的原型&原型链&闭包,在很多人看来是区分JS程序员水平的关键知识点,当然对这句话我不是十分赞同.但是掌握这 ...
- js原型和原型链_初识JS原型/原型链/原型继承
本文思路: 原型->原型链->原型继承->基于原型的继承/ES6中的继承->__proto__与prototype 首先我们知道JS中有对象,比如: var 但是在我们没有对这 ...
- 怎么理解js的原型链继承?
前言 了解java等面向对象语言的童鞋应该知道.面向对象的三大特性就是:封装,继承,多态. 今天,我们就来聊一聊继承.但是,注意,我们现在说的是js的继承. 在js的es6语法出来之前,我们想实现js ...
- js的原型链简单理解
js的原型链 首先,在将js的原型链之前我们先来说一下什么是原型,当我们生成一个普通对象x的时候,这个x会有一个隐藏属性x._proto_,这个属性会指向Object.prototype也就是 x._ ...
- 深入学习js之——原型和原型链
开篇: 在Brendan Eich大神为JavaScript设计面向对象系统的时候,借鉴了Self 和Smalltalk这两门 基于原型的语言,之所以选择基于原型的面向对象系统,并不是因为时间匆忙,它 ...
- JavaScript——原型/原型链中的顶层对象(图解)
本篇需要提前了解的知识储备:原型和原型链,以下仅概要介绍,不作详细讲解. 详细学习可参考: JavaScript--面向对象(封装):https://blog.csdn.net/qq_29493173 ...
- JS - 11 - 原型、继承 -
感谢:https://www.bilibili.com/video/av78687689?p=2 笔记 文章目录 waht? 原型 # 原型方法.对象方法的优先级 # 函数 的原型 原型 关系 . 属 ...
- PHP中的__toString方法(实现JS里的链式操作)
_toString方法是在打印对象时自动调用的魔术方法,如果不声明会报以下错 Catchable fatal error: Object of class String could not be co ...
最新文章
- SpringMVC入门案例
- zedgraph支持游标吗_经典格斗游戏中的隐藏人物,当年在游戏厅你能选出来吗
- php新手最容易犯的错误,学习PHP过程中容易犯的一些错误
- SWFKit 3.5 + 注册机
- boost::hana::intersperse用法的测试程序
- 算法工程师实习岗面试题(part1)
- python的类和实例_Python 面向对象编程——类和实例
- Qt文档阅读笔记-Q_CLASSINFO官方解析与实例
- 计算特征矩阵及哈希值(含OpenCV代码)
- 两边填上相同的数_二年级必考题,在括号里填上相同的数~
- 【虚拟化】支持IDE/SATA/SCSI
- 从RedHat到MongoDB,开源商业软件是如何占领世界的
- Embedding技术在商业搜索与推荐场景的实践
- 【1131】C/C++经典程序训练1---最大公约数与最小公倍数
- Scrapy基础(八)————图片下载后将本地路径添加到Item中
- matlab绘图和python绘图
- c++ 位运算 和 掩码
- Inno Setup 详解中文资料
- 炫酷网站模板,css,html
- HTML渐变背景不重复,CSS背景渐变重复问题