函数和原型
在看這篇文章 《理解Javascript原型》 時(shí),有幾段話把我看得一頭霧水,舉的列子我也沒(méi)太看明白
“每個(gè)函數(shù)都有一個(gè)原型屬性。反過(guò)來(lái),如果不是函數(shù),將不會(huì)有這樣一個(gè)屬性。”
“函數(shù)A的原型屬性(prototype property )是一個(gè)對(duì)象,當(dāng)這個(gè)函數(shù)被用作構(gòu)造函數(shù)來(lái)創(chuàng)建實(shí)例時(shí),該函數(shù)的原型屬性將被作為原型賦值給所有對(duì)象實(shí)例”
于是自己在Chrome控制臺(tái)測(cè)試了一下,總算能理解了,我們把這幾段話一句句來(lái)剖析:
“每個(gè)函數(shù)都有一個(gè)原型屬性。”
“函數(shù)A的原型屬性(prototype property )是一個(gè)對(duì)象”
可看出,a是一個(gè)函數(shù),擁有原型屬性protoype,且該屬性是一個(gè)對(duì)象
“反過(guò)來(lái),如果不是函數(shù),將不會(huì)有這樣一個(gè)屬性。”
b是由a實(shí)例化的一個(gè)對(duì)象,不是函數(shù),故b沒(méi)有原型屬性
“當(dāng)這個(gè)函數(shù)被用作構(gòu)造函數(shù)來(lái)創(chuàng)建實(shí)例時(shí),該函數(shù)的原型屬性將被作為原型賦值給所有對(duì)象實(shí)例”
繼續(xù)看這一句話,上面b是由a實(shí)例化的,所以a會(huì)將其原型屬性(prototype)賦給b的原型
可看到b的原型和a的原型屬性一致
也許看到這里你已經(jīng)被 原型 和 原型屬性 弄暈了,我們闡釋一下二者的區(qū)別:
原型屬性??是指對(duì)象的屬性 prototype
原型 ?是指對(duì)象的屬性 __proto__,對(duì)應(yīng)的是該對(duì)象構(gòu)造函數(shù)內(nèi)的原型屬性
所以獲得一個(gè)對(duì)象的原型可以通過(guò)obj.__proto__,也可以用obj.constructor.prototype獲得
?
轉(zhuǎn)載于:https://www.cnblogs.com/hisheng/p/6134961.html
總結(jié)
- 上一篇: 初识Notification
- 下一篇: 关于Memcache使用的工具类