1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. javaScript工廠方式原始的方式

        時間:2020-11-13 12:53:42 JavaScript 我要投稿

        javaScript工廠方式原始的方式

          因為對象的屬性可以在對象創(chuàng)建后動態(tài)定義,這在 JavaScript 最初引入時都會編寫類似下面的代碼

        javaScript工廠方式原始的方式

          復(fù)制代碼 代碼如下:

          var oCar = new Object;

          oCar.color = "blue";

          oCar.doors = 4;

          oCar.mpg = 25;

          oCar.showColor = function() {

          alert(this.color);

          };

          在上面的代碼中,創(chuàng)建對象 car。然后給它設(shè)置幾個屬性:它的顏色是藍(lán)色,有四個門,每加侖油可以跑 25 英里。最后一個屬性實(shí)際上是指向函數(shù)的指針,意味著該屬性是個方法。執(zhí)行這段代碼后,就可以使用對象 car。不過這里有一個問題,就是可能需要創(chuàng)建多個 car 的實(shí)例,這顯然不是很好的方式。

          解決方案:工廠方法

          要解決該問題,開發(fā)者創(chuàng)造了能創(chuàng)建并返回特定類型的對象的工廠函數(shù)。例如,函數(shù) createCar() 可用于封裝前面列出的創(chuàng)建 car 對象的操作:

          復(fù)制代碼 代碼如下:

          function createCar(sColor,iDoors,iMpg) {

          var oTempCar = new Object;

          oTempCar.color = sColor;

          oTempCar.doors = iDoors;

          oTempCar.mpg = iMpg;

          oTempCar.showColor = function() {

          alert(this.color);

          };

          return oTempCar;

          }

          var oCar1 = createCar("red",4,23);

          var oCar2 = createCar("blue",3,25);

          oCar1.showColor(); //輸出 "red"

          oCar2.showColor(); //輸出 "blue"

          調(diào)用此工廠函數(shù),將創(chuàng)建新對象,并賦予它所有必要的`屬性,給 createCar() 函數(shù)加上參數(shù),即可為要創(chuàng)建的 car 對象的 color、doors 和 mpg 屬性賦值。這使兩個對象具有相同的屬性,卻有不同的屬性值。該方法有個不好的地方在于每創(chuàng)建一個car對象(即調(diào)用一次createCar函數(shù))都會重復(fù)的為每個對象創(chuàng)建showColor 方法,而這時沒有必要的而事實(shí)上,每個對象都共享同一個函數(shù)。于是我們嘗試在函數(shù)之外去聲明其方法屬性。

          在工廠函數(shù)外定義對象的方法

          有些開發(fā)者在工廠函數(shù)外定義對象的方法,然后通過屬性指向該方法,從而避免這個問題:

          復(fù)制代碼 代碼如下:

          function showColor() {

          alert(this.color);

          }

          function createCar(sColor,iDoors,iMpg) {

          var oTempCar = new Object;

          oTempCar.color = sColor;

          oTempCar.doors = iDoors;

          oTempCar.mpg = iMpg;

          oTempCar.showColor = showColor;

          return oTempCar;

          }

          var oCar1 = createCar("red",4,23);

          var oCar2 = createCar("blue",3,25);

          oCar1.showColor(); //輸出 "red"

          oCar2.showColor(); //輸出 "blue"

          在上面這段重寫的代碼中,在函數(shù) createCar() 之前定義了函數(shù) showColor()。在 createCar() 內(nèi)部,賦予對象一個指向已經(jīng)存在的 showColor() 函數(shù)的指針。從功能上講,這樣解決了重復(fù)創(chuàng)建函數(shù)對象的問題;但是從語義上講,該函數(shù)不太像是對象的方法。

          

        【javaScript工廠方式原始的方式】相關(guān)文章:

        1.javascript工廠方式的使用

        2.JavaScript插件化開發(fā)方式

        3.javascript的六種繼承方式

        4.JavaScript中調(diào)用函數(shù)的4種方式

        5.javascript函數(shù)命名的三種方式及區(qū)別

        6.工廠機(jī)電設(shè)備節(jié)能改造技術(shù)方式

        7.潛水的入水方式-潛水的出水方式

        8.在韓國留學(xué)的住宿方式及解決方式

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>