js算不算面向?qū)ο蟮恼Z言?
網(wǎng)友解答: 謝邀,js肯定算面向?qū)ο笳Z言。有句話說得好,“JavaScript里一切皆對象”。如果不確定,那我們首先明確下什么是面向?qū)ο?,有三個核心概念。一是一切事物皆為對象;二是對象具
謝邀,js肯定算面向?qū)ο笳Z言。有句話說得好,“JavaScript里一切皆對象”。如果不確定,那我們首先明確下什么是面向?qū)ο?,有三個核心概念。
一是一切事物皆為對象;
二是對象具有封裝和繼承特性;
三是對象之間使用消息通信,各自存在信息隱藏。
我嘗試通過以下幾個例子來看Js是否都滿足三個特性。
封裝在一些靜態(tài)類型的語言如java中,本身語法就提供了這些功能。js當(dāng)中只能依靠變量的作用域來實現(xiàn)封裝的特性,并且只能模擬出public和private兩種特性。
繼承雖然在es6中也有extend以及class,但其本質(zhì)仍實現(xiàn)仍是基于原型機制。雖然原型繼承方式寫法很多,但是理解原型鏈機制比較重要,關(guān)鍵其實就是理解prototype和__prototype__。
多態(tài)多態(tài)其實就是把做的內(nèi)容和誰去做分開。因為js是動態(tài)語言,多態(tài)性本身就有。下面這個例子就說明了,一個動物能否實現(xiàn)叫聲,只取決于makeSound,而不針對某種類型的對象。
如果你對學(xué)習(xí)人工智能和科技新聞感興趣,可以訂閱我的酷米號,我會在這里發(fā)布所有與算法、機器學(xué)習(xí)以及深度學(xué)習(xí)有關(guān)的有趣文章。偶爾也回答有趣的問題,有問題可隨時在評論區(qū)回復(fù)和討論,看到即回。
(碼字不易,若文章對你幫助請點贊支持~)
網(wǎng)友解答:我學(xué)js時間不長不短,還算湊合吧。剛開始聽到的是js是弱類型語言,不能面向?qū)ο缶幊獭?/p>
到后來接觸其他的編程語言之后有些明白了,面向?qū)ο蟛皇悄膫€語言所特有的屬性,而是一種思想,通俗些說就是把一個項目進行模塊兒化。面向?qū)ο蟮娜齻€特性,封裝,繼承,多態(tài),從這三個方面來看,js是屬于面向?qū)ο蟮木幊陶Z言范疇的。
但在js中的繼承并沒有其他語言中的那么繁瑣,諸如c++中的公有,私有,保護什么的,所以說js是嚴(yán)謹(jǐn)?shù)拿嫦驅(qū)ο蟮木幊陶Z言又感覺不太合適,但在項目開發(fā)中是可以采用面向?qū)ο蟮乃枷雭磉M行對js編程的。
還是那句話,面向?qū)ο蟛皇悄膫€語言所特有的屬性,而是一種編程的思想,與其說js是面向?qū)ο蟮木幊蹋蝗缯f是面向原型的編程語言。
當(dāng)然關(guān)于面向原型什么,感興趣可以看一下,其實沒啥用在開發(fā)中!
小生才疏學(xué)淺,有解釋不當(dāng)?shù)牡胤竭€請見諒,也可以私信評論互相學(xué)習(xí)。