#再读JS# (5)JS世界
- 构造函数(Function、Array、Object)的
prototype
和__proto__
如何方便的区分开:
首先理解原型,__proto__
用于存放共有属性的对象的地址,等同于其构造函数的prototype
的地址。
我给自己总结的规律是:prototype
是给孩子的,因为孩子可以用自己的__proto__
访问到,所以需要把共有属性的地址放里面。
而__proto__
是给自己的,存自己的共有属性,所以存放创建自己的对象的属性的地址。
那么,如构造函数Object,prototype
存放的是Object原型对象的地址,为了让创建出来的小object能访问到这些共有属性(涉及原型链知识)。__proto__
就直接存放构建了自己的Function构造函数的prototype
的地址,即Funtion原型的地址。
-
一些基本原理
1、对象.__proto__
===其构造函数.prototype
2、Object.prototype
是所有对象的直接或间接原型,它是根
3、所有函数(Function、Array、Object)都是由Function构造的,即函数.__proto__
===Function.prototype
;因而Function.__proto__
===Function.prototype
也成立 -
JS世界
图来源:饥人谷方方老师上课画的