高级js

JavaScript 原型和原型链

2021-11-14  本文已影响0人  暴躁程序员

参考:https://www.cnblogs.com/loveyaxin/p/11151586.html

1.原型

原型的概念:

每一个javascript对象(除null外)创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。

2.原型链

原型链的概念(以下图为例):

每个构造函数Person都有一个prototype属性指向原型对象,同时每个原型对象prototype都有一个属性constructor指向它的构造函数,
每个构造函数Person都可以创造实例化对象person,每个实例化对象都有一个__ proto __ 对象原型指向构造函数的原型对象prototype
原型对象也都有一个__ proto __ 对象原型指向上一级构造函数的prototype原型对象
以此类推,最上层是Object() 对象,再往上就是null

原型链关系图:
原型链关系图
原型链查找机制:

当我们使用实例属性的时候,首先先从实例对象上找、找不到到构造函数上找、找不到再到原型对象上找、找不到再通过原型对象的 __ proto __ 找到上父级的原型对象,先找构造函数,再找原型对象,依次类推,找不到就一直沿着__ proto __ 原型往上找

3. 常见重点关系词

1. prototype 原型对象

每个构造函数都有一个prototype属性指向它的原型对象

2. __ proto __ 对象原型(每个对象都有这个属性)

实例对象的__ proto __ 指向构造函数的原型对象
原型对象的__ proto __ 指向上一级构造函数的原型对象

3. constructor 属性

每个原型对象都有一个constructor属性,指向它的构造函数。

上一篇 下一篇

猜你喜欢

热点阅读