今天,在網上看到這個講原型和原型鏈的通俗的分析,感覺對理解還是有幫助的,特此分享:
原型鏈理解起來有點繞了,網上資料也是很多,每次晚上睡不著的時候總喜歡在網上找點原型鏈和閉包的文章看,效果極好。不要糾結于那一堆術語了,那除了讓你腦筋擰成麻花,真的不能幫你什么。簡單粗暴點看原型鏈吧,想點與代碼無關的事,比如人、妖以及人妖。
1)人是人他媽生的,妖是妖他媽生的。人和妖都是對象實例,而人他媽和妖他媽就是原型。原型也是對象,叫原型對象。
2)人他媽和人他爸啪啪啪能生出一堆人寶寶、妖他媽和妖他爸啪啪啪能生出一堆妖寶寶,啪啪啪就是構造函數,俗稱造人。
3)人他媽會記錄啪啪啪的信息,所以可以通過人他媽找到啪啪啪的信息,也就是說能通過原型對象找到構造函數。
4)人他媽可以生很多寶寶,但這些寶寶只有一個媽媽,這就是原型的唯一性。
5)人他媽也是由人他媽他媽生的,通過人他媽找到人他媽他媽,再通過人他媽他媽找到人他媽他媽……,這個關系叫做原型鏈。
6)原型鏈并不是無限的,當你通過人他媽一直往上找,最后發現你會發現人他媽他媽他媽……的他媽都不是人,也就是原型鏈最終指向null。
7)人他媽生的人會有人的樣子,妖他媽生的妖會有妖的丑陋,這叫繼承。
8)你繼承了你媽的膚色,你媽繼承了你媽他媽的膚色,你媽他媽……,這就是原型鏈的繼承。
9)你談對象了,她媽讓你帶上房產證去提貨,你若沒有,那她媽會問你媽有沒有,你媽沒有那她媽會問你媽她媽有沒有……這就是原型鏈的向上搜索。
10)你會繼承你媽的樣子,但是你也可以去染發洗剪吹,就是說對象的屬性可以自定義,會覆蓋繼承得到的屬性。
11)雖然你洗剪吹了染成黃毛了,但你不能改變你媽的樣子,你媽生的弟弟妹妹跟你的黃毛洗剪吹沒一點關系,就是說對象實例不能改動原型的屬性。
12)但是你家被你玩火燒了的話,那就是說你家你媽家你弟們家都被燒了,這就是原型屬性的共享。
13)你媽外號阿珍,鄰居大娘都叫你阿珍兒,但你媽頭發從飄柔做成了金毛獅王后,隔壁大嬸都改口叫你包租仔,這叫原型的動態性。
14)你媽愛美,又跑到韓國整形,整到你媽他媽都認不出來,即使你媽頭發換回飄柔了,但隔壁鄰居還是叫你金毛獅王子。因為沒人認出你媽,整形后的你媽已經回爐再造了,這就是原型的整體重寫。(轉載!)