<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • javaScript工廠方式原始的方式

    時(shí)間:2024-09-12 17:51:38 JavaScript 我要投稿
    • 相關(guān)推薦

    javaScript工廠方式原始的方式

      因?yàn)閷?duì)象的屬性可以在對(duì)象創(chuàng)建后動(dòng)態(tài)定義,這在 JavaScript 最初引入時(shí)都會(huì)編寫類似下面的代碼

    javaScript工廠方式原始的方式

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

      var oCar = new Object;

      oCar.color = "blue";

      oCar.doors = 4;

      oCar.mpg = 25;

      oCar.showColor = function() {

      alert(this.color);

      };

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

      解決方案:工廠方法

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

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

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

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

      復(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)部,賦予對(duì)象一個(gè)指向已經(jīng)存在的 showColor() 函數(shù)的指針。從功能上講,這樣解決了重復(fù)創(chuàng)建函數(shù)對(duì)象的問題;但是從語(yǔ)義上講,該函數(shù)不太像是對(duì)象的方法。

      

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

    正確的洗發(fā)方式06-17

    孩子慢跑的方式06-26

    員工激勵(lì)的方式10-14

    回憶營(yíng)銷的方式05-23

    演講與口才方式07-28

    高空跳傘的方式10-16

    兔子的飼養(yǎng)方式06-27

    化妝的正確方式07-30

    日本留學(xué)方式08-29

    企業(yè)做網(wǎng)絡(luò)營(yíng)銷推廣方式的五種方式08-22

    主站蜘蛛池模板: 九九精品成人免费国产片| 国产精品视频免费一区二区| 9999国产精品欧美久久久久久 | 精品久久一区二区| 无码日韩人妻精品久久蜜桃 | 国产亚洲精品xxx| 久久亚洲私人国产精品| 亚洲精品岛国片在线观看| 国产精品H片在线播放| 国产精品www| 精品欧洲av无码一区二区 | 精品无码久久久久久国产| 国产91精品一区二区麻豆亚洲 | 国内精品久久久久久99蜜桃| 亚洲精品无码乱码成人| 日本精品一区二区三区四区| 国产精品成人久久久久三级午夜电影| 国产精品亚洲精品| 2022年国产精品久久久久| 国产乱人伦偷精品视频免下载| 午夜精品乱人伦小说区| 亚洲Av无码精品色午夜| 中文字幕精品一区二区精品| 亚洲国产成人乱码精品女人久久久不卡| 国产精品偷伦视频免费观看了| 99精品久久久久久久婷婷| 亚洲欧美日韩精品永久在线| 久久最新精品国产| 日韩精品在线一区二区| 91精品久久久久久无码| 国产精品国产三级国产潘金莲 | 久久综合国产乱子伦精品免费| 少妇精品久久久一区二区三区| 亚洲精品永久在线观看| 亚洲精品乱码久久久久久蜜桃| 亚洲午夜精品久久久久久浪潮 | 精品少妇无码AV无码专区| 人人妻人人澡人人爽人人精品97| 亚洲AV成人精品一区二区三区 | 一区二区三区精品高清视频免费在线播放 | 久久这里只有精品18|