一、二者的聯繫和區別(優缺點),關於原型繼承: (1)原型繼承在有別於類繼承是由於繼承不在對象自己,而在對象的原型上(prototype); (2)每個對象都有原型,在瀏覽器中它體如今一個隱藏的__proto__屬性上; (3)在一些現代瀏覽器中能夠更改它們:好比在zepto中,就是經過添加zepto的fn對象到一個空的數組的__proto__屬性上去,從而使得該數組成爲一個zepto對象而且擁有全部的方法; (4)當一個對象須要調用某個方法時,它回去最近的原型上查找該方法,若是沒有找到,它會再次往下繼續查找;逐級查找,一直找到了要找的方法,這些查找的原型構成了該對象的原型鏈條; (5)原型最後指向的是null,原型繼承,就是將父對像的方法給子類的原型,可是子類的構造函數中不擁有這些方法和屬性。 二、關於基於類的繼承和原型對比起來,構造函數(類)式繼承的不一樣: (1)構造函數繼承的方法都會存在父對象之中,每一次實例,都回將funciton保存在內存中,這樣的作法會帶來性能上的問題; (2)其次類式繼承是不可變的:在運行時,沒法修改或者添加新的方法,這種方式是一種固步自封的死方法; (3)而原型繼承是能夠經過改變原型連接而對子類進行修改的,另外就是類式繼承不支持多重繼承,而對於原型繼承來講,只須要寫好extend對對象進行擴展便可。 三、組合模式,是結合類繼承和原型繼承的各自優勢來進行對父類的繼承: (1)用類式繼承屬性,而原型繼承方法:這種模式避免了屬性的公用; (2)由於一般來講,每個子類的屬性都是私有的,而方法獲得了統一。數組