乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JavaScript創(chuàng)建自定義對象的幾種常見方式與比較

       posondlq 2012-09-08
              初學(xué)JavaScript,正在讀 Nicholas C. Zakas 的《JavaScript高級程序設(shè)計》,看到了創(chuàng)建對象,簡單的對書中內(nèi)容做了一下總結(jié):

      [html]
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">  
      1. <html xmlns="http://www./1999/xhtml">  
      2. <head>  
      3.     <title></title>  
      4. </head>  
      5. <body>  
      6.     <script type="text/javascript">  
      7.         //1.創(chuàng)建Object,為其添加屬性方法  
      8.         var person = new Object();  
      9.         person.name = "Nicholas";  
      10.         person.age = 29;  
      11.         personal.job = "Software Engineer";  
      12.   
      13.         personal.sayName = function () {  
      14.             alert(this.name);  
      15.         };  
      16.   
      17.         /*  
      18.         缺點(diǎn):使用一個接口創(chuàng)建很多對象,會產(chǎn)生大量重復(fù)代碼  
      19.         */  
      20.   
      21.         //2.工廠模式  
      22.         function createPersonal(name, age, job) {  
      23.             var o = new Object();  
      24.             o.name = name;  
      25.             o.age = age;  
      26.             o.job = job;  
      27.             o.sayName = function () {  
      28.                 alert(this.name);  
      29.             };  
      30.             return o;  
      31.         }  
      32.   
      33.         /*  
      34.         工廠模式解決了對象相似問題,卻沒有解決對象識別問題(怎樣知道一個對象的類型)  
      35.         */  
      36.   
      37.         //3.構(gòu)造函數(shù)模式  
      38.         function Person(name, age, job) {  
      39.             this.name = name;  
      40.             this.age = age;  
      41.             this.job = job;  
      42.             this.sayName = function () {  
      43.                 alert(this.name);  
      44.             };  
      45.         }  
      46.   
      47.         /*  
      48.         構(gòu)造函數(shù)模式?jīng)]有顯式的創(chuàng)建對象,直接將方法和屬性賦給了this對象,沒有return語句  
      49.         要創(chuàng)建Person的新實(shí)例,必須使用new操作符,實(shí)際經(jīng)歷4個步驟  
      50.         a.創(chuàng)建一個新對象  
      51.         b.將構(gòu)造函數(shù)的作用域賦給新對象(this指向這個新對象)  
      52.         c.執(zhí)行構(gòu)造函數(shù),為新對象添加屬性  
      53.         d.返回新對象  
      54.         構(gòu)造函數(shù)模式創(chuàng)建的對象可以識別其類型,但每個方法都要在每個實(shí)例上重建一遍  
      55.         */  
      56.   
      57.         //創(chuàng)建兩個實(shí)例,創(chuàng)建兩個相同的方法沒必要,可以把函數(shù)定義轉(zhuǎn)到方法外部  
      58.         function Person(name, age, job) {  
      59.             this.name = name;  
      60.             this.age = age;  
      61.             this.job = job;  
      62.             this.sayName = sayName;  
      63.         }  
      64.   
      65.         function sayName() {  
      66.             alert(this.name);  
      67.         }  
      68.   
      69.         /*  
      70.         這樣解決了兩個方法做同一件事的的問題,但在全局作用域上定義的函數(shù)只能被某個對象調(diào)用,如果對象定義需要很多方,就要定義很多全局函數(shù),自定義的引用類型就沒有封裝         性了  
      71.         */  
      72.   
      73.         //4.原型模式  
      74.         function Person() {  
      75.         }  
      76.   
      77.         Person.prototype.name = "Nocholas";  
      78.         Person.prototype.age = 29;  
      79.         Person.prototype.job = "Software Engineer";  
      80.         Person.prototype.sayName = function () {  
      81.             alert(this.name);  
      82.         }  
      83.   
      84.         /*  
      85.         原型模式所有參數(shù)默認(rèn)取得相同的值,屬性若為引用類型,多個實(shí)例之間互相影響  
      86.         */  
      87.   
      88.         //5.構(gòu)造函數(shù)原型混合模式  
      89.         function Person(name, age, job) {  
      90.             this.name = name;  
      91.             this.age = age;  
      92.             this.job = job;  
      93.         }  
      94.   
      95.         Person.prototype.sayName = function () {  
      96.             alert(this.name);  
      97.         }  
      98.   
      99.         /*  
      100.         構(gòu)造函數(shù)用于定義實(shí)例屬性,原型用于定義方法和共享屬性,。eigenvalue實(shí)例都會有一份自己實(shí)例屬性的副本,同時享用著對共享方法的引用  
      101.         */  
      102.   
      103.   
      104.     </script>  
      105. </body>  
      106. </html>  

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多