建立對象的幾種方式(一)

第一種:用Object構造函數前端

  var a = new Object();設計模式

  var b = new Object();函數

第二種:對象字面量的方式學習

  var a = {};字體

  a.name = 'li';this

  a.age = 21;spa

第一種和第二種建立對象的方式有個明顯的缺點:使用同一個接口建立不少對象,會產生大量的重複代碼。好比:咱們建立一個a b c三個對象,若是給他們添加屬性的時候要分別添加,那萬一有一萬個對象呢?一百萬個呢?咱們不是上帝,揮一揮衣袖,人就出來了。設計

咱們雖然也是揮一揮衣袖,可是若是創造如此龐大的對象羣體,估計就算手不殘廢了,鍵盤也得換個幾百個吧!嘿嘿……。對象

爲了解決這個問題,人們開始使用一種工廠模式的變體。接口

  那咱們先理解一下什麼是工廠模式?

    工廠模式:這是軟件工程領域的一種廣爲人知的一種設計模式。這種模式抽象了建立具體對象的過程。

      好比寫一個word那樣的程序,它能夠打開doc、rtf、txt等好幾種文件格式,而對於這些文件的處理方法是不一樣的,好比txt就不能保存文字顏色字體之類的信息,那麼我可能這樣設計:

word主程序,一個類Application,它有一個虛方法(或抽象方法,不過C#中抽象方法只能在抽象類裏)叫OpenFile,用來打開指定的文件,而後返回一個Doucument類的實例,這個類能夠直接把它的內容顯示在屏幕上,word處理的主體是這個類。這個Application

類還有不少方法好比關閉打印之類的。

         而後從Application類派生出一個子類TxtApplication,父類中OpenFile是虛方法,沒有實現,在子類中重寫這個方法,打開Txt文檔,讀取txt文件,而後返回一個Document類。

而後再從Application裏派生一個子類RichTxtApplication,也重寫OpenFile,它打開rtf文檔,從裏面讀取相應的文檔和文檔的格式信息,而後也返回一個Document類。

      最後,根據必定的策略(好比用戶要打開的文件的擴展名是「txt」,就實例化一個txtApplication,而後調用它的OpenFile方法得到Document;若是擴展名是「rtf」,就實例化一個rtfApplication,調用它的OpenFile方法得到Document)。

這樣,Application類中的OpenFile方法就叫作工廠方法,這種「一個類但願由它的子類指定它所建立的對象」的方法就是工廠模式

    這裏簡單的作了一個比喻,相信你們都可以理解。

    由工廠模式在ECMAScript衍生除了不少創造對象的模式。

先介紹第一中模式:

  1、工廠模式

    function creatPerson(name,age,sex){

      var a = new Object();

      a.name = name;

      a.age = age;

      a.job = job;

      a.sayAge = function(){

        alert(this.age);

      }

      return a;

    }

  var person1 = creatPerson('li',12,'boss');

  person1.sayAge();

  咱們能夠無數次的調用createPerson()這個函數,用來創造對象,而且建立的對象實例裏面總會有三個屬性和一個方法。因此工廠模式建立了建立多個類似對象的問題,可是卻沒有解決對象識別的問題。因而下一個新模式就出現了。(這裏先介紹一個)

  隨着時代的發展,總會有新的東西取代舊東西。咱們的前端亦是如此,咱們只有不斷的努力學習新的知識,新的思想,纔不會被這個社會所淘汰。我是剛開始接觸前端的小菜鳥一枚,只是想寫點隨筆,記錄天天的點點滴滴,水平有限,但願你們能對我寫的東西能進行批評指正,我都會虛心接受,雖然我如今寫的東西很是的淺,只是但願有跟我同樣的前端,能從中得到哪怕一小點的知識,由於我入職的是電商,之後我把我在工做中的問題與解決方案分享給你們,立刻就要作自營平臺了。但願本身通過這一次的挑戰。能有一個很大的提高。由於如今正在學習js,因此把工做之餘看的一些東西,分享給你們。但願你們都能快樂的工做,永遠不放棄!^_^

相關文章
相關標籤/搜索