這裏體現的是兩種JS的編程思想:面向對象編程和麪向過程編程,兩者都屬於是編程思想,各有優缺點
面向過程:
在項目開發中會有各種的邏輯方法,有的是交互,有的是創建,有的是求結果,面向過程編程是把編程的重心放在方法實現的過程中,由上到下,由高到低的順序執行,一步一步逐步細化
優勢:在項目規模不大的情況下,更能直觀的表現出方法邏輯,更容易定位錯誤,整體的執行順序一目瞭然
劣勢:隨着項目的開發不斷深入,代碼量會越來越多,執行的方法也是會越來越複雜,這時候就會出現需要打亂順序的情況,導致代碼的可維護性變差,
面向對象:
是一種以對象爲中心的編程思想,他把我們要執行方法,拆成許多個類,利用對象的屬性和方法打到執行動作的目的,需要的時候就去調用
優勢:模塊化程度更深,更容易解決大型的複雜的業務邏輯,可以做到隨時取用,可編輯性和可維護性更高,在一些複雜場景,比如需要臨時更改中間某一處的執行順序和動作,面向對象能更好的銜接
劣勢:面向對象編程的要求更高,考慮的維度更廣,邏輯也更加複雜一些,對一些新手不是很友好,存在方法執行快慢造成打斷現象,在一些中小項目中或許有點事倍功半
二者對比:
一、出發點不同
前者以執行過程爲主,後者以對象屬性和方法爲主
二、邏輯層次關係和維度的不同
後者更貼近客觀生活,由主題去執行動作
三、延展性不同
後者可以在橫向和縱向有更深的延展性
四、動作執行順序和實現原理的不同
前者以過程來驅動數據,後者以事件驅動的方式,對象自身的屬性和數據只能有自己的功能去執行修改
舉例:
一、把大象裝進冰箱
面向過程:
打開冰箱(冰箱) → 裝填(冰箱,大象) → 關門(冰箱)
面向對象:
冰箱.開門() → 冰箱.裝填(大象) → 冰箱.關門()
二、客戶通過站點寄快遞(涉及多個維度的執行動作)
面向過程:
送件(客戶) → 收件(站點) → 付款(客戶) → 登記(客戶,站點) → 分揀(站點) → 郵寄(站點)
面向對象:
客戶.送件() → 站點.收件() → 客戶.付款() → 站點.登記()、客戶.登記() → 站點.分揀() → 站點.郵寄()