相信很多學習前端的朋友都認識JavaScript的三座大山。
這里假設閱讀的朋友對js已經(jīng)有一定的基礎。如果沒有的話,請暫時留步。
那js三座大山是什么呢?
1、原型和原型鏈
2、作用域和閉包
3、異步和單線程
本篇文章主要是寫原型和原型鏈,至于后面兩座大山,在我的下兩篇文章會整理出來。
第一個問題:什么是原型?
原型分兩類:顯式原型(prototype)和隱式原型(__proto__)(proto左右兩邊都是兩條下劃線)
第二個問題:原型規(guī)則有哪些?
1、所有函數(shù)都有prototype屬性,屬性值是一個普通對象。
2、所有的引用類型(數(shù)組、對象和函數(shù)),都具有自由擴展屬性(也就是原型屬性啦)。(null除外)
3、所有的引用類型都具有__proto__屬性,并且指向他們的構(gòu)造函數(shù)的prototype屬性。
4、如果一個對象找不到本身的屬性,那么會尋找構(gòu)造這個對象的屬性。
是不是看得有點費解?下面讓我用實例來說明!
第三個問題:什么是原型鏈
第一個例子幫助你了解原型鏈,原型鏈其實就是__proto__的指向鏈接起來的各個對象。
第二個例子:是封裝一個DOM查詢的例子,通過獲取節(jié)點,改變文本內(nèi)容和事件。(適合面試拿出來秀一把)
覺得好的點個贊,給我一些信心。
如果可以的話,可以一起學習。大家一起進步