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