荐 小白也能彻底理解的prototype原型链第二篇
程序员文章站
2022-07-02 15:28:08
前言回顾一下,上一篇文章主要通过构造函数与其实例对象讲解了原型对象、构造函数和隐式原型链之间的关系及用法,希望没看过的同学去先去看看第一篇再来。这一篇我们主要是来完整的学习下原型链。首先需要了解的__proto__和constructor属性是一般对象所独有的函数也是一种对象,且独有prototype属性null和undefined不属于一般对象1.构造函数与实例对象之间的原型链function Person () {}let person1 = new Person()以上代码大...
前言
回顾一下,上一篇文章主要通过构造函数与其实例对象讲解了原型对象、构造函数和隐式原型链之间的关系及用法,希望没看过的同学去先去看看第一篇再来。
这一篇我们主要是来完整的学习下原型链。
首先需要了解的
- __proto__和constructor属性是一般对象所独有的
- 函数也是一种对象,且独有prototype属性
- null和undefined不属于一般对象
1.构造函数与实例对象之间的原型链
function Person () {}
let person1 = new Person()
以上代码大家应该很熟悉了,尤其再配上下面这张图。
原型链指的是对象在获取其属性时,首先会查找它自身的属性,如果找不到,会沿着原型链一级一级向上查找属性,如果找到会停止向上查找并返回属性值,如果找不到则返回undefined
。以上图例中,绿色的那一条线就是原型链。
2.函数的原型链
(1).描述
- 所有函数的构造函数都是Function(Function函数的构造函数也是它本身Function)
- 相对应的函数隐式原型链的上一级都是
Function.prototype
,再往上是Object.prototype
,最上一级指向null
(2).图解
foo为自定义函数,其余Object
、Function
、Symbol
等函数为js中原生构造函数。以下蓝色线条都为函数的隐式原型链。
(3).结论
一个函数的隐式原型链指向如下
3.对象的原型链
(1).基础回顾
在javascript入门时相信大家都了解过js的几种基本数据类型。加上es6之后加上的Symbol
与BigInt
一种八种。
- Boolean
- Null
- Undefined
- Number
- BigInt
- String
- Symbol
- Object
(2)非一般对象
这个非一般对象
是我自己起的名