1什么是JS原型链?
- 通过
__proto__
属性将对象与原型对象进行连接.
1.1 JS原型链的作用?
- 组成的一个链条结构的继承组织.
2简单的原型链
- 不BB看图.
简单的原型链
-
对象o -->Fn的原型对象-->Object的原型对象-->null
- 原型对象既是容器又是对象.
- 通过proto属性,将对象与原型对象进行链接.
- 除了Object函数的原型对象的
__proto__
属性指向null终止原型链. - 其他的函数的原型对象的
__proto__
属性都指向Object原型对象. - 是不是可以理解成除了Object的原型对象,
其他所有函数的原型对象都是Object创建的?
- 对象的
__proto__
属性指向对应构造函数的原型对象.
-
通过简单原型链图解,实际上创建对象有2种方法.
- 内置的Object构造函数创建.
- 使用自定义构造函数创建.
- 总结:
- 通过原型链,对象可以获得原型链上所有原型对象上的属性和方法.
- JS通过原型链条来继承方法.
3完整原型链
3.1 Function是一个特殊的函数
- Function的proto属性和prototype属性同时指向Function的原型对象.
- Function的原型对象的proto属性指向Object的原型对象.
Function自己创建了自己!
Function和Function原型对象
3.2 函数也是对象.
- 所以函数有proto属性.
- 所有函数的proto属性都指向Function的原型对象.
也就是说所有的函数都是Function创建的.
完整原型图
4最后总结原型链
1 所有的函数都是Function构造函数创建的包括自己,Object,函数,Array等...
1.1 也就是说所有的函数的proto属性都指向Function原型对象.
2 除了Object的原型对象,其他函数的原型对象都是Object创建的.
2.1 也就是说,所有的函数的原型对象的proto属性都指向Object原型对象.
3Object的原型对象的proto属性指向null.
3.1 也就是说原型链条到这里是终点.
4原型链的目的就是实现继承.