昨天有人問我類怎么寫,我一下就蒙了,啥是類啊,查了資料才知道,就是js里的構建函數
1、構造函數法
構造函數的優點是:我們可以根據參數來構造不同的對象實例 ,缺點是每次構造實例對象時都會生成getName方法,造成了內存的浪費。
用一個外部函數來代替類方法,達到了每個對象共享同一個方法
2、原型方式
原型方式的缺點就是不能通過參數來構造對象實例 (一般每個對象的屬性是不相同的) ,優點是所有對象實例都共享getName方法(相對於構造函數方式),沒有造成內存浪費 。
3、構造函數+原型方式
優點:用構造函數來定義類屬性(字段)。用原型方式來定義類的方法。這樣,我們就既可以構造不同屬性的對象,也可以讓對象實例共享方法,不會造成內存的浪費
為了讓js代碼風格更緊湊,我們讓prototype方法代碼移到function Phone的大括號內。
4、Object.create()方法
用這個方法,"類"就是一個對象,而不是函數。然后,直接用Object.create()生成實例,不需要用到new。這種方法比"構造函數法"簡單,但是不能實現私有屬性和私有方法,實例對象之間也不能共享數據,對"類"的模擬不夠全面。這就是對象字面量方法