1什么是JS原型鏈?
- 通過
__proto__
屬性將對(duì)象與原型對(duì)象進(jìn)行連接.
1.1 JS原型鏈的作用?
- 組成的一個(gè)鏈條結(jié)構(gòu)的繼承組織.
2簡(jiǎn)單的原型鏈
- 不BB看圖.
簡(jiǎn)單的原型鏈
-
對(duì)象o -->Fn的原型對(duì)象-->Object的原型對(duì)象-->null
- 原型對(duì)象既是容器又是對(duì)象.
- 通過proto屬性,將對(duì)象與原型對(duì)象進(jìn)行鏈接.
- 除了Object函數(shù)的原型對(duì)象的
__proto__
屬性指向null終止原型鏈. - 其他的函數(shù)的原型對(duì)象的
__proto__
屬性都指向Object原型對(duì)象. - 是不是可以理解成除了Object的原型對(duì)象,
其他所有函數(shù)的原型對(duì)象都是Object創(chuàng)建的?
- 對(duì)象的
__proto__
屬性指向?qū)?yīng)構(gòu)造函數(shù)的原型對(duì)象.
-
通過簡(jiǎn)單原型鏈圖解,實(shí)際上創(chuàng)建對(duì)象有2種方法.
- 內(nèi)置的Object構(gòu)造函數(shù)創(chuàng)建.
- 使用自定義構(gòu)造函數(shù)創(chuàng)建.
- 總結(jié):
- 通過原型鏈,對(duì)象可以獲得原型鏈上所有原型對(duì)象上的屬性和方法.
- JS通過原型鏈條來繼承方法.
3完整原型鏈
3.1 Function是一個(gè)特殊的函數(shù)
- Function的proto屬性和prototype屬性同時(shí)指向Function的原型對(duì)象.
- Function的原型對(duì)象的proto屬性指向Object的原型對(duì)象.
Function自己創(chuàng)建了自己!
Function和Function原型對(duì)象
3.2 函數(shù)也是對(duì)象.
- 所以函數(shù)有proto屬性.
- 所有函數(shù)的proto屬性都指向Function的原型對(duì)象.
也就是說所有的函數(shù)都是Function創(chuàng)建的.
完整原型圖
4最后總結(jié)原型鏈
1 所有的函數(shù)都是Function構(gòu)造函數(shù)創(chuàng)建的包括自己,Object,函數(shù),Array等...
1.1 也就是說所有的函數(shù)的proto屬性都指向Function原型對(duì)象.
2 除了Object的原型對(duì)象,其他函數(shù)的原型對(duì)象都是Object創(chuàng)建的.
2.1 也就是說,所有的函數(shù)的原型對(duì)象的proto屬性都指向Object原型對(duì)象.
3Object的原型對(duì)象的proto屬性指向null.
3.1 也就是說原型鏈條到這里是終點(diǎn).
4原型鏈的目的就是實(shí)現(xiàn)繼承.