亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

Javascript 中創建自定義對象的方法匯總

2024-05-06 16:11:26
字體:
來源:轉載
供稿:網友
這篇文章主要匯總介紹了Javascript 中創建自定義對象的方法,需要的朋友可以參考下
 
 

Javascript 中創建對象,可以有很多種方法。

Object構造函數/對象字面量

拋開設計模式不談,使用最基本的方法,就是先調用Object構造函數創建一個對象,然后給對象添加屬性.

 

復制代碼代碼如下:

     var student = new Object();
     student.name = "xiao ming";
     student.age = 20;
     student.getName = function () {
         alert(this.name);
     }

熟悉javascript 對象字面量的同學,可以換一種更好的寫法,至少看上去更簡潔。

 

 

復制代碼代碼如下:

    var student = {
        name: "xiao hong",
        age: 18,
        getName: function () {
            alert(this.name);
        }
    };

 缺點:上面方法有個缺點就是,使用同一個接口創建很多類似的對象時,會產生大量重復的代碼。這個應該很容易理解了,函數(方法或者類)一般是用來創建公共的方法,上面的對象創建過程,根本沒有函數的影子,所以談不上什么重用。

 

工廠模式

工廠模式 抽象了具體創建對象的過程。就像一個黑盒,你只要調用函數(進入工廠),并且傳入相應參數(各種原材料),就會出來一個相應的對象(工廠生產的產品)。工廠模式解決了創建多個相似對象的問題。

 

復制代碼代碼如下:

     function studentFactory(name,age) {
         var student = new Object();
         student.name = name;
         student.age = age;
         student.sayName = function () {
             alert(this.name);
         }
         return student;
     }
     var p1 = studentFactory("ming", 20);
     var p2 = studentFactory("hong", 18);

 

缺點:工廠模式也有缺點,最大的缺點就是 對象類型識別的問題。只能判斷出對象是Object 類型(p1 instanceof Object),而無法具體判斷出來是哪種類型。使用工廠模式創建出來的student 其實都有著類似的屬性和方法,只是值不同而已。這時 更好的解決方法是,創建一個Student 函數,這樣所有的對象都屬于 Student 類型。所以工廠模式不是不好,只是 構造函數模式更優。

自定義類型的構造函數:

構造函數可以用來創建特定類型的對象。

 

復制代碼代碼如下:

     function Student(name,age) {
         this.name = name;
         this.age = age;
         this.sayName = function () {
             alert(this.name);
         }
     }
     var p3 = new Student("ming", 20);
     var p4 = new Student("hong", 18);
     alert(p3 instanceof Student); 
    alert(p3.sayName==p4.sayName); //false

 

缺點:自定義構造函數 的不足之處就是,每個對象都會重新創建自己的方法,其實這些方法功能是一樣的(像 sayName),但是它們卻不相同(p3.sayName 和p4.sayName不相等)。

原型模式:

定義一個空函數,然后把所有屬性和方法都添加到原型上,這樣所有的 對象都會共用這些屬性和方法。

 

復制代碼代碼如下:

     function Student() {};
     Student.prototype.name = "ming";
     Student.prototype.age = 20;
     Student.prototype.friends = ['qi'];
     Student.prototype.sayName = function () {
         alert(this.name);
     };

 

缺點:有些屬性不能共享,共享回來帶來問題,例如:friends。每位同學的friends 大多都不會相同。

構造函數與原型的組合:

 

復制代碼代碼如下:

     function Student(name, age, friends) {
         this.name = name;
         this.age = age;
         this.friends = friends;
     }
     Student.prototype = {
         constructor: Student,
         sayName: function () {
             alert(this.name);
         }
     };

 

總結:構造函數與原型的組合 是一種獲得廣泛認可的創建自定義類型的方法。 也是上面這些方法中的最優方法。

/*************************************************************************************************************/

其實上面的創建對象的方法已經很多了,但是還是有可能出現一些比較特殊的場景,需要繼續的優化。

動態原型模式:

它是構造函數與原型組合 的一種優化。對于那些共用的屬性和方法,如果初始化之后,就不必再重復初始化,提高效率。

 

復制代碼代碼如下:

       function Student(name, age) {
           this.name = name;
           this.age = age;
           if ((typeof this.sayName) != "function") {
               Student.prototype.sayName = function () {
                   alert(this.name);
               }
           }
       }
       var stu = new Person("ming", 20);
       //alert(stu instanceof Student);
       stu.sayName();
      var stuNew = new Person("hong", 18);
      //alert(stuNew instanceof Student);
      stuNew.sayName();

 

當創建多個student對象時,sayName 方法只會初始化一次。

最后還有一種很有用的創建對象的方式,就是穩妥構造函數。

穩妥構造函數模式:

在這個模式中會禁止使用this和new,所有對象沒有公共的屬性。只能讀取變量的值,而不能修改。

 

復制代碼代碼如下:

      ////穩妥構造函數模式
      function Student(name, age) {
          var o = new Object();
          o.sayName = function () {
              alert(name);
          }
          return o;
      }
      var stu = Student("ming", 21);
      stu.sayName();

 

以上匯總了幾種常見的Javascript創建自定義對象的方法,非常的全面,大家如有更好的,請聯系我,本文持續更新。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产不卡精品视男人的天堂| 欧美精品久久久久久久免费观看| 欧美激情精品久久久久久蜜臀| 日韩av在线直播| 国产日韩欧美日韩大片| 国产在线精品成人一区二区三区| 91免费人成网站在线观看18| 91豆花精品一区| 91欧美精品午夜性色福利在线| 国产精品嫩草影院久久久| 日韩在线不卡视频| 欧美另类69精品久久久久9999| 亚洲成年人在线| 国产精品久久久久免费a∨大胸| 91在线免费看网站| 久久精品久久精品亚洲人| 在线视频亚洲欧美| 午夜精品久久久久久久男人的天堂| 欧美国产视频一区二区| 亚洲精品网站在线播放gif| 国产精品人人做人人爽| 国产日韩在线免费| 中文字幕日韩在线观看| 国产成人亚洲综合91精品| 日韩精品在线电影| 97精品国产97久久久久久免费| 欧美亚洲视频在线看网址| 欧美激情一区二区三级高清视频| 精品二区三区线观看| 欧美一级高清免费播放| 国产精品观看在线亚洲人成网| 欧美电影在线观看完整版| 国产精品igao视频| 亚洲xxxx视频| 日韩网站免费观看| 日韩女在线观看| 欧美一级电影免费在线观看| 亚洲午夜久久久久久久| 日韩中文字幕网站| 欧美精品在线网站| 77777少妇光屁股久久一区| 色综合亚洲精品激情狠狠| 一本一本久久a久久精品牛牛影视| 欧美最顶级丰满的aⅴ艳星| 日韩av电影院| 国产精品热视频| 菠萝蜜影院一区二区免费| 欧美日韩国产一区二区三区| 欧美中文在线观看国产| 国产精品99久久久久久白浆小说| 国产精品美女免费看| 日本午夜在线亚洲.国产| 91精品视频在线播放| 成人免费视频在线观看超级碰| 国产精品一区二区三区在线播放| 亚洲天堂男人的天堂| 免费不卡欧美自拍视频| 精品中文视频在线| 中文字幕欧美精品日韩中文字幕| 亚洲bt欧美bt日本bt| 亚洲久久久久久久久久| 国产一区二区在线免费| 精品久久香蕉国产线看观看gif| 精品国产依人香蕉在线精品| 成人97在线观看视频| 久久中文字幕一区| 黑人精品xxx一区| 中文字幕欧美日韩| 上原亚衣av一区二区三区| 91精品视频在线看| 日韩精品免费在线视频观看| 亚洲自拍欧美色图| 亚洲精品mp4| 日韩国产激情在线| 国产成人精品免高潮在线观看| 久久97精品久久久久久久不卡| 成人亚洲欧美一区二区三区| 国产精品久久久久久久一区探花| 91人成网站www| 亚洲午夜久久久久久久| 国产69精品久久久| 亚洲欧美日韩视频一区| 欧美极品少妇xxxxⅹ免费视频| 亚洲精品国产拍免费91在线| 国产精品日韩一区| 日韩精品高清视频| 97超级碰在线看视频免费在线看| 成人性生交大片免费观看嘿嘿视频| 91久久久久久久久久久| 亚洲人成在线观看网站高清| 久久国产精彩视频| 成人免费午夜电影| 国产欧美日韩精品丝袜高跟鞋| 精品国产一区久久久| 国产成人精品最新| 色婷婷亚洲mv天堂mv在影片| 国产精品午夜一区二区欲梦| 欧美高跟鞋交xxxxhd| 亚洲精品国产拍免费91在线| 亚洲欧美日韩天堂| 欧美视频精品一区| 国产日韩欧美中文| 综合网日日天干夜夜久久| 国产精品一久久香蕉国产线看观看| 成人激情黄色网| 亚洲精品91美女久久久久久久| 最近中文字幕2019免费| 国产精品视频免费在线观看| 亚洲男人天堂2019| 色综合影院在线| 久久中文精品视频| 欧美激情一区二区三级高清视频| 国产日本欧美视频| 欧美黑人视频一区| 久久久国产精品x99av| 欧美亚洲视频一区二区| 亚洲人成电影网站色www| 国产精品久久久久久中文字| 亚洲福利精品在线| 国产91精品青草社区| 午夜精品一区二区三区在线播放| 91国产高清在线| 日韩电影大全免费观看2023年上| 97在线视频免费看| 欧美成年人视频网站欧美| 91免费视频网站| 欧美日韩国产激情| 日韩精品极品毛片系列视频| 国产一区二区三区在线播放免费观看| 国产亚洲精品久久| 日韩一区在线视频| 中文字幕精品网| 国产精品流白浆视频| 日韩在线播放视频| 亚洲高清久久网| 亚洲第一偷拍网| 亚洲精品电影在线观看| 日本久久久久久久| 欧美激情一级欧美精品| 亚洲字幕一区二区| 国产婷婷色综合av蜜臀av| 国产v综合v亚洲欧美久久| 国产suv精品一区二区| 97视频色精品| 成人精品视频久久久久| 97免费视频在线播放| 日韩免费视频在线观看| 亚洲一区二区久久久久久久| 一区二区三区精品99久久| 日本国产高清不卡| 91免费国产网站| 欧美成人合集magnet| 中文字幕日韩视频| 国产精品一区二区久久久| 亚洲欧美日韩图片| 国产一区二区动漫| 一区二区国产精品视频| 国产精品免费看久久久香蕉| 国产经典一区二区| 欧美高清自拍一区| 亚洲一区亚洲二区亚洲三区| 精品国产999| 韩日精品中文字幕| 欧美亚州一区二区三区|