图解 js 原型链
前言
想要理解好js的繼承,需要理解原型鏈,這是JavaScript的基礎(chǔ)的重點。看了很多資料都是文字描述,原型關(guān)系描述的不夠形象,在此基于自己的理解及參考網(wǎng)上的資料寫下這篇文章。這里僅寫下一點淺見,不足之處歡迎拍磚。
原型對象
js對象都有一個prototype對象屬性,我們可以在這個原型對象上,添加方法、屬性。
function Person(name) {this.name = name; } Person.prototype.say = function (params) {console.log('what!'); }那么,這個Person構(gòu)造函數(shù),內(nèi)部的關(guān)系是什么呢?看看這個圖。Person === Person.prototype.constructor.
原型指針
js對象都具有一個__proto__屬性,它指向他的原型。
(1)Person的原型是FUNCTION.prototype,也就是Person.__proto__ === FUNCTION.prototype。自然的,FUNCTION.prototype也是一個對象,它指向Object.prototype,也就是FUNCTION.prototype.__proto__ === Object.prototype
(2)Person.prototype 是一個對象,那么他的原型當然是Object了,也就是Person.prototype.__proto__=== Object.prototype。
(3)發(fā)現(xiàn)它們最終的指向都是Object.prototype,那這東西指向誰呢?這時候要感悟一下四大皆空,道法自然的一生二、二生三、三生萬物了。他們最終指向null,null派生出所有的東西。
最終得到如下圖所示的原型關(guān)系。
原型鏈
通過上述的對象內(nèi)關(guān)系描述,和對象間的關(guān)系描述,得到原型鏈示意圖如下。
參考文獻
1.大佬文章寫的真不錯,大家可以看看。
總結(jié)
- 上一篇: css新特性
- 下一篇: 计算机语言发展浅层笔记