1. 先上图--原型链图解
2. 理解原型链
-------------注意:结合上图理解-------------
前言:
理解 原型链 就要 理解 原型
在JS中一切皆对象
(当前对象,原型)
原型,则顾名思义可理解为:原始对象,当前对象的原型源自这个原始对象
(或继承其属性,或继承其方法函数)
注意:简理解每个对象都是可以分成
1. __proto__ 隐式原型
(!!!所有对象都有__proto__)
2. prototype 显式原型
(!!!只有函数对象才有prototype)
下面👇🏻的分类从局部来理解,原型链,从一个构造对象的原型链来理解全局的原型链
1 . ⭐对象Object 都有一个属性 _ _ proto _ _
- 构造函数的实例化对象的 _ proto _ 指向该对象的构造函数的原型(该原型有一个构造函数属性既这个构造函数)
2 . ⭐只有函数对象Function 有属性 prototype
- ⭐注意构造函数的实例化对象(一切实例化对象)无prototype!!
- 普通函数的prototype基本无用
3 . ⭐对象的 _ _ proto _ _ 属性指向 该对象 的 构造函数的原型(prototype)
4 . ⭐JS中 有内置的Object构造函数 和内置 Ojbect对象原型
- 内置的Object构造函数 的原型(prototype)指向 内置 Ojbect对象原型
- ⭐内置的Object构造函数 的 _ _ proto _ _ 指向 内置 Function对象原型
- 所有自定义构造函数的_ _ proto _ _ 都指向内置 Ojbect对象原型(若无上级原型)
- ⭐内置 Ojbect对象原型的_ _ proto _ _ 为 Null
5 . ⭐JS中 有内置的Function构造函数 和内置 Function对象原型
- 内置的 Function 构造函数 的原型(prototype) 指向 内置 Function 对象原型
- 内置的 Function 构造函数 的 _ _ proto _ _ 指向 内置 Function 对象原型
- 内置 Function 对象原型 的_ _ proto _ _ 指向 内置 Object 对象原型
参考资料:
[# 一篇文章看懂_proto_和prototype的关系及区别]www.jianshu.com/p/7d58f8f45…
[一篇文章看懂_proto_和prototype的关系及区别] www.jianshu.com/p/7d58f8f45…
[是否所有函数都有prototype] blog.csdn.net/jingshui123…