javascript物件導向

來源:互聯網
上載者:User

標籤:概念   問題   instance   使用   本質   模型   image   記憶體   不同   

1.類與對象。

對象:“萬物皆對象”。以人為例子,人類是個集體,而某一個人就是一個對象。需要和類結合起來理解。

類:指的是一個抽象的概念,物以類聚中的“類”,它是一個集合概念,是由人通過某一類事物的特點特性總結出來的。用在javascript中,就是指對象的一個集合,這類對象需要有共同的某個或某些屬性和方法的。

例:比如說杯子,“杯子”就可以看做一個類,而這個類需要有一些特徵。能盛水,可以供人喝水的,就叫做杯子。這是所有杯子的統一特徵,也就是杯子這一類。而具體到某一個杯子,比如我就有一個喝水的杯子,而這個杯子就是一個對象。這樣我們就能明顯瞭解到,類是一個虛有的存在,你不能具體指出它在哪裡,是哪個。但是對象是具體的存在,可以明確指出在哪裡,是哪個。

其實類和對象很好理解,需要結合一下現實生活中的例子就可以,因為“類”與“對象”本身就是從生活中抽離出來運用到電腦語言中的概念。

2.建立對象。

在javascript中我們需要建立一個對象,需要用new關鍵字。下面是建立對象的兩種方法。

這種建立對象的方法是最普通方便的方法,當然也存在著一些弊端。比如說,我們需要創造50個年齡都是16歲的對象,那麼我們需要寫50遍obj.age=16,這會造成一大堆的代碼重複。

針對這個問題,我們可以選擇使用原廠模式,方法如下:

 工廠模型建立對象本質就是一個帶有參數的函數,由於javascript在esm6之前是沒有類這個概念的,所以用函數的思想類比類。在建立對象的時候加入實參就可以了。但是這種模式建立的對象依然存在弊端,比如說他沒有辦法給創造出來的對象增添新的屬性和方法。而且對於建立出來的對象沒有明確的分類,不同的工廠模型建立的對象都屬於object。雖然類比了類,但是沒有類本身的特性。簡單來說就是用工廠模型建立的對象,無論是建立出來的人也好,動物也好,都屬於object,並沒有真正意義上的將他們分別開了。

針對工廠模型的弊端,又提出了一種新的方式去建立對象,構建函數:

上面的instanceof是驗證建立出來的對象屬不屬於Person的。實踐證明,這種方法可以解決原廠模式關於分類的問題。構建函數的方法建立對象雖說可以解決對象歸類的問題,但是對於記憶體存在著消耗的問題,所以我們需要把構建函數和工廠模型結合起來,把屬性定義在原廠模式,將方法存放在構建函數中。

得到了建立對象的最終方案。

 

簡單的講解了一下物件導向中建立對象的方法,請大神批評指正,共同進步!

javascript物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.