從我們開始接觸Java這門語言后,就有人告訴我們這是一個面向?qū)ο蟮恼Z言。那問題來了,什么是面向?qū)ο竽?
面向?qū)ο?Object Oriented)是軟件開發(fā)方法,一種編程范式。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計和軟件開發(fā),擴展到如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。面向?qū)ο笫且环N對現(xiàn)實世界理解和抽象的方法,是計算機編程技術(shù)發(fā)展到一定階段后的產(chǎn)物。
面向?qū)ο笫窍鄬τ诿嫦蜻^程來講的,面向?qū)ο蠓椒?,把相關(guān)的數(shù)據(jù)和方法組織為一個整體來看待,從更高的層次來進行系統(tǒng)建模,更貼近事物的自然運行模式。
面向過程是具體化的,流程化的,解決一個問題,你需要一步一步的分析,一步一步的實現(xiàn)。
面向?qū)ο笫悄P突?,你只需抽象出一個類,這是一個封閉的盒子,在這里你擁有數(shù)據(jù)也擁有解決問題的方法。需要什么功能直接使用就可以了,不必去一步一步的實現(xiàn),至于這個功能是如何實現(xiàn)的,管我們什么事?我們會用就可以了。
面向?qū)ο蟮牡讓悠鋵嵾€是面向過程,把面向過程抽象成類,然后封裝,方便我們我們使用的就是面向?qū)ο罅?/p>
現(xiàn)在你應(yīng)該已經(jīng)明白什么是面向?qū)ο罅?那我們應(yīng)該怎么去學(xué)習(xí)他呢?
面向?qū)ο蟮娜亍?/p>
(1)封裝。 (2)多態(tài)。 (3)繼承。
1、 封裝
? ? ? 在js中,重點在于訪問權(quán)限。在其他原生支持面向?qū)ο笳Z言中,一般支持public、protected、private三個關(guān)鍵字來控制訪問權(quán)限,但在js中,我們只能依靠復(fù)雜的作用域關(guān)系來控制:
2、 繼承
繼承的實現(xiàn),主要有2種方法:第一種是使用javascript本身的原型模型,通過給prototype賦值并改變其constructor屬性來實現(xiàn)繼承;第二種方法是不使用prototype,手動實現(xiàn)將父對象的所有屬性方法深拷貝到子對象。比如A需要繼承B,第一種寫法可以:A.prototype=new B();A.prototype.constructor=A; 第二種寫法可以寫一個遞歸,或者使用jquery中的方法extend。另外,如果要實現(xiàn)多繼承的話,prototype就真的好麻煩了(需要依次多個類,還要建空對象來接),第二種方法就比較簡單,依次拷貝即可。一般這種繼承為了找父類方便,可以在對象中加個屬性,引用父類。
3、 多態(tài)
函數(shù)重載就不說了,都會,檢查參數(shù)即可,很靈活。隱藏屬性就是直接賦值undefined。需要注意的是,如果是打算繼承B類的prototype,一定要建一個空對象來接,否則的話,你給類寫方法的話,相當(dāng)于直接修改了prototype,就算不寫方法,你最后修改constructor時也會造成繼承鏈錯亂,接個空對象很容易
需要更多課程的小伙伴歡迎在評論區(qū)或者后臺私信