區(qū)分JavaScript的prototype、__proto__還有construcetion

正常操作,正常分析,大家好我是D1n910,發(fā)現(xiàn)有些同學(xué)不能區(qū)分JavaScript的prototype、__proto__還有construcetion。這邊介紹下~

JavaScript是面向?qū)ο笳Z(yǔ)言,對(duì)象是什么呢?
“找對(duì)象” ,對(duì)象,常有兩層意思,指行動(dòng)或思考時(shí)作為目標(biāo)的事物或特指戀愛(ài)的對(duì)方等含義。
這里的對(duì)象和“行動(dòng)或思考時(shí)作為目標(biāo)的事物”差不多,為什么用微信的時(shí)候,點(diǎn)擊發(fā)送,就可以把消息發(fā)送出去?就好像汽車(chē)腳踩油門(mén)啟動(dòng),人被手撓一下就咯咯笑。

“發(fā)送“這個(gè)按鈕有綠色的背景顏色,稍微深綠色的邊框,一點(diǎn)點(diǎn)的圓角,白色上下左右居中的“發(fā)送”文字,點(diǎn)擊能夠發(fā)送輸入框內(nèi)容。
就好像一輛汽車(chē),有四個(gè)輪子,銀色外漆,x秒之內(nèi)就能達(dá)到若干速度一樣。
都是對(duì)象。
javascipt中構(gòu)造一個(gè)新的對(duì)象我們是知道的了,最簡(jiǎn)單的做法就是類(lèi)似下面這樣
function People() {}
var d1n910 = new People()
分別打印People還有新的對(duì)象d1n910


我們可以發(fā)現(xiàn)People自然就是個(gè)函數(shù),通過(guò)這個(gè)函數(shù)構(gòu)造出了d1n910,所以稱(chēng)之為構(gòu)造函數(shù)。
d1n910這個(gè)是我們構(gòu)建出來(lái),實(shí)際要使用的東西,就好像根據(jù)奔馳車(chē)的圖紙做出了一輛真實(shí)的奔馳,稱(chēng)之為實(shí)例對(duì)象
有注意到d1n910這個(gè)實(shí)例對(duì)象有一個(gè)自然天生的屬性,__proto__。這個(gè)是做什么用的呢?
同時(shí)我們也注意到這個(gè)屬性值還包含著一個(gè) construction以及又一個(gè)__proto__,怎么回事呢?
我們先介紹下這面這幅圖

【構(gòu)造函數(shù)】,是根據(jù)【原型對(duì)象】造【實(shí)例對(duì)象】。
1、【構(gòu)造函數(shù)】通過(guò)使用prototype找到原型對(duì)象;

2、【原型對(duì)象】通過(guò)使用constructor知道自己的構(gòu)造函數(shù);

3、【實(shí)例對(duì)象】通過(guò)使用__proto__找到原型對(duì)象【即自己上一級(jí)的】

因?yàn)閷?shí)例對(duì)象是根據(jù)原型對(duì)象構(gòu)造出來(lái)的,所以說(shuō)會(huì)繼承原型對(duì)象的屬性和方法,比如它同樣可以直接通過(guò)construction找到構(gòu)造函數(shù)。

這樣可以做很多操作,比如你可以這么用
為原型對(duì)象賦值方法,那么所有的實(shí)例對(duì)象都會(huì)繼承這個(gè)方法。

End