日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

一张图看透JavaScript原型关系:__proto__(对象原型)和prototype(函数原型)

發(fā)布時(shí)間:2025/3/20 javascript 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一张图看透JavaScript原型关系:__proto__(对象原型)和prototype(函数原型) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問(wèn):函數(shù)豈不是擁有兩個(gè)原型?

答:是的,函數(shù)有兩個(gè)原型proto和prototype。
因?yàn)楹瘮?shù)是對(duì)象,而對(duì)象就有原型,其原型就是proto。函數(shù)是Function的實(shí)例,所以此原型就是Function.prototype。
而函數(shù)的prototype,不是給自己用的,而是給自己實(shí)例用的。

問(wèn):到底是構(gòu)造函數(shù)有原型,還是實(shí)例有原型?

答:關(guān)鍵是這個(gè)“有”字怎么解釋。說(shuō)白了,就是擁有權(quán)和使用權(quán)的區(qū)分。平常我們說(shuō)話時(shí),并不仔細(xì)區(qū)分二者。

就像我們經(jīng)常會(huì)說(shuō),“你的公司在哪里?”,但我們都知道,公司并不是你的,是屬于董事會(huì)的,你只是在那上班罷了。
又比如,你有輛跑車,但你從來(lái)不開它,卻給你的親朋好友開。你有擁有權(quán),但沒(méi)使用權(quán)。相反,你的好友雖沒(méi)有擁有權(quán),但有使用權(quán)。
從一般語(yǔ)義上來(lái)說(shuō),構(gòu)造函數(shù)擁有原型,放在自身prototype上,但不是給自身用的,而是給它的實(shí)例用的。
從JS的語(yǔ)義上來(lái)說(shuō),實(shí)例對(duì)象擁有原型,其內(nèi)部屬性[[prototype]](即proto指向)指向構(gòu)造器的prototype。
另外一點(diǎn),擁有權(quán)是獨(dú)占的,而使用權(quán)是共享的。

因此某一個(gè)構(gòu)造函數(shù)的不同實(shí)例的原型是同一個(gè)。

問(wèn):原型鏈的終點(diǎn)是什么?

:Object.prototype。它是個(gè)對(duì)象,它的原型是null。

問(wèn):函數(shù)都是Function的實(shí)例,而Function也是函數(shù),它是誰(shuí)的實(shí)例?

:它是自身的實(shí)例。所以它的proto與自身的prototype是同一個(gè)東西。而且是個(gè)函數(shù),此函數(shù)不再有prototype,但是作為對(duì)象,它的proto是Object.prototype。這是系統(tǒng)內(nèi)置好的。

問(wèn):Object.proto和Object.prototype是什么關(guān)系?

:后者是前者的原型。因?yàn)镺bject是函數(shù),是Function的實(shí)例,因此Object.proto就是Function.prototype,所以后者是前者的原型。


請(qǐng)尊重原創(chuàng),原文鏈接:http://www.qdfuns.com/notes.php?mod=view&u=17398&id=6962d01d88c6b73ea606662fd397b6f6

總結(jié)

以上是生活随笔為你收集整理的一张图看透JavaScript原型关系:__proto__(对象原型)和prototype(函数原型)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。