回覆列表
  • 1 # 你看我獨角獸嗎

    一是一切事物皆為物件;

    二是物件具有封裝和繼承特性;

    三是物件之間使用訊息通訊,各自存在資訊隱藏。

    我嘗試透過以下幾個例子來看Js是否都滿足三個特性。

    封裝

    在一些靜態型別的語言如java中,本身語法就提供了這些功能。js當中只能依靠變數的作用域來實現封裝的特性,並且只能模擬出public和private兩種特性。

    繼承

    雖然在es6中也有extend以及class,但其本質仍實現仍是基於原型機制。雖然原型繼承方式寫法很多,但是理解原型鏈機制比較重要,關鍵其實就是理解prototype和__prototype__。

    多型

    多型其實就是把做的內容和誰去做分開。因為js是動態語言,多型性本身就有。下面這個例子就說明了,一個動物能否實現叫聲,只取決於makeSound,而不針對某種型別的物件。

  • 2 # 你不懂我的痛

    我學js時間不長不短,還算湊合吧。剛開始聽到的是js是弱型別語言,不能面向物件程式設計。

    到後來接觸其他的程式語言之後有些明白了,面向物件不是哪個語言所特有的屬性,而是一種思想,通俗些說就是把一個專案進行模組兒化。面向物件的三個特性,封裝,繼承,多型,從這三個方面來看,js是屬於面向物件的程式語言範疇的。

    但在js中的繼承並沒有其他語言中的那麼繁瑣,諸如c++中的公有,私有,保護什麼的,所以說js是嚴謹的面向物件的程式語言又感覺不太合適,但在專案開發中是可以採用面向物件的思想來進行對js程式設計的。

    還是那句話,面向物件不是哪個語言所特有的屬性,而是一種程式設計的思想,與其說js是面向物件的程式設計,不如說是面向原型的程式語言。

    當然關於面向原型什麼,感興趣可以看一下,其實沒啥用在開發中!

  • 3 # 蘑菇頭MTV

    在es6出現之前,js是沒有面向物件概念的,但是卻可以用原型鏈(關鍵字:prototype)實現面向物件,在es6中已經引入了面向物件的概念,所有如今的js也算得上是面向物件的語言了。

  • 中秋節和大豐收的關聯?
  • DNF低成本刷商城積分,80塊可換3000積分,是真的嗎?怎麼操作?