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

首頁 > 編程 > JavaScript > 正文

javascript中定義類的方法詳解

2019-11-20 13:10:46
字體:
來源:轉載
供稿:網友

JS中定義類的方式有很多種:

1、工廠方式

復制代碼 代碼如下:

  function Car(){
   var ocar = new Object;
   ocar.color = "blue";
   ocar.doors = 4;
   ocar.showColor = function(){
    document.write(this.color)
   };
   return ocar;
  }
  var car1 = Car();
  var car2 = Car();

  調用此函數時將創建新對象,并賦予它所有的屬性和方法。使用此函數可以創建2個屬性完全相同的對象。當然我妹可以通過給它傳遞參數來改版這種方式。

復制代碼 代碼如下:

  function Car(color,door){
   var ocar = new Object;
   ocar.color = color;
   ocar.doors = door;
   ocar.showColor = function(){
    document.write(this.color)
   };
   return ocar;
  }
  var car1 = Car("red",4);
  var car2 = Car("blue",4);
  car1.showColor()  //output:"red"
  car2.showColor()  //output:"blue"

  現在可以通過給函數傳遞不同的參數來得到具有不同值的對象。
  在前面的例子中,每次調用函數Car(),都要創建showcolor(),意味著每個對象都有一個自己的showcolor()方法。

 但是事實上,每個對象斗共享了同一個函數。
  雖然可以在函數外定義方法,然后通過將函數的屬性指向該方法。

復制代碼 代碼如下:

  function showColor(){
   alert(this.color);
  }
  function Car(){
   var ocar = new Object();
   ocar.color = color;
   ocar.doors = door;
   ocar.showColor = showColor;
   return ocar;
  }

  但是這樣看起來不像是函數的方法。

2、構造函數方式

  構造函數方式同工廠方式一樣簡單,如下所示:

復制代碼 代碼如下:

  function Car(color,door){
   this.color = color;
   this.doors = door;
   this.showColor = function(){
    alert(this.color)
   };
  }
  var car1 = new Car("red",4);
  var car2 = new Car("blue",4);

  可以看到構造函數方式在函數內部沒有創建對象,是用this關鍵字。因為在調用構造函數時已經創建了對象,而在函數內部只能用this來訪問對象屬性。
  現在用new來創建對象,看起來像那么回事了!但是它同工廠方式一樣。每次調用都會為對象創建自己的方法。

3、原型方式

  該方式利用了對象的prototype屬性。首先用空函數創建類名,然后所有的屬性和方法都被賦予prototype屬性。

復制代碼 代碼如下:

  function Car(){
  }
  Car.prototype.color = "red";
  Car.prototype.doors = 4;
  Car.prototype.showColor = function(){
   alert(this.color);
  }
  var car1 = new Car();
  var car2 = new Car();

  在這段代碼中,首先定義了一個空函數,然后通過prototype屬性來定義對象的屬性。調用該函數時,原型的所有屬性都會立即賦予要創建的對象,所有該函數的對象存放的都是指向showColor()的指針,語法上看起來都屬于同一個對象。
  但是這個函數沒有參數,不能通過傳遞參數來初始化屬性,必須要在對象創建后才能改變屬性的默認值。
  原型方式有個很嚴重的問題就是當屬性指向的是對象時,如數組。

復制代碼 代碼如下:

  function Car(){
  }
  Car.prototype.color = "red";
  Car.prototype.doors = 4;
  Car.prototype.arr = new Array("a","b");
  Car.prototype.showColor = function(){
   alert(this.color);
  }
  var car1 = new Car();
  var car2 = new Car();
  car1.arr.push("cc");
  alert(car1.arr);  //output:aa,bb,cc
  alert(car2.arr);  //output:aa,bb,cc

  這里由于數組的引用值,Car的兩個對象指向的都是同一個數組,所以當在car1添加值后,在car2中也可以看到。
 聯合是用構造函數/原型方式就可以像其他程序設計語言一樣創建對象,是用構造函數定義對象的非函數屬性,用原型方式定義對象的方法。

復制代碼 代碼如下:

  function Car(color,door){
   this.color = color;
   this.doors = door;
   this.arr = new Array("aa","bb");
  }
  Car.prototype.showColor(){
   alert(this.color);
  }
  var car1 = new Car("red",4);
  var car2 = new Car("blue",4);
  car1.arr.push("cc");
  alert(car1.arr);  //output:aa,bb,cc
  alert(car2.arr);  //output:aa,bb

5、動態原型方式 

  動態原型的方式同混合的構造函數/原型方式原理相似。唯一的區別就是賦予對象方法的位置。

復制代碼 代碼如下:

  function Car(color,door){
   this.color = color;
   this.doors = door;
   this.arr = new Array("aa","bb");
   if(typeof Car._initialized == "undefined"){
    Car.prototype.showColor = function(){
     alert(this.color);
    };
    Car._initialized = true;
   }
  }

 動態原型方式是使用一個標志來判斷是否已經給原型賦予了方法。這樣可以保證該方法只創建一次

6、混合工廠方式

  它的目的師創建假構造函數,只返回另一種對象的新實例。

復制代碼 代碼如下:

  function Car(){
   var ocar = new Object();
   ocar.color = "red";
   ocar.doors = 4;
   ocar.showColor = function(){
    alert(this.color)
   };
   return ocar;
  }

  與工廠方式所不同的是,這種方式使用new運算符。 

以上就是全部的創建對象方法。目前使用最廣泛的就是混合構造函數/原型方式,此外,動態原型方式也很流行。在功能上與構造函數/原型方式等價。

以上就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久免费精品国产| 88xx成人精品| 欧美激情精品久久久久久黑人| 亚洲老头同性xxxxx| 国产日韩精品在线| 欧美日韩国产色视频| 欧美又大又硬又粗bbbbb| 青青草精品毛片| 黑人欧美xxxx| 欧美精品18videos性欧| 日韩美女av在线| 日韩成人高清在线| 欧美国产乱视频| 国产精品久久久久久久av大片| 欧美韩日一区二区| 亚洲精品电影网站| 中文字幕欧美视频在线| 中文国产成人精品久久一| 97精品在线观看| 一区二区三区视频观看| 亚洲精品av在线| 欧洲亚洲免费视频| 91免费国产网站| 久久91精品国产91久久久| 最近2019中文免费高清视频观看www99| 国产精品海角社区在线观看| 欧美人与物videos| 欧美激情在线一区| 在线观看国产精品日韩av| 亚洲精品www久久久| 国产精品嫩草视频| 国产成人精品a视频一区www| 97精品久久久| 亚洲一区二区免费| 精品亚洲精品福利线在观看| 在线观看日韩www视频免费| 久久久久久久影视| 福利二区91精品bt7086| 亚洲成人黄色网| 欧美精品videossex性护士| 国产精品96久久久久久又黄又硬| 亚洲深夜福利视频| 日韩成人高清在线| 亚洲精品久久久一区二区三区| 中文字幕日韩在线观看| 亚洲国产精品电影在线观看| 久久久国产在线视频| 国产999视频| 欧美一乱一性一交一视频| 91亚洲国产成人久久精品网站| 国产精品7m视频| 日韩女在线观看| 亚洲美女av电影| 久久精品视频中文字幕| 亚洲国产日韩欧美在线动漫| 欧美在线亚洲一区| 日韩国产在线播放| 欧美精品情趣视频| 麻豆国产精品va在线观看不卡| 亚洲天堂av网| 国产91在线高潮白浆在线观看| 亚洲天堂av在线免费| 青草青草久热精品视频在线观看| 91精品久久久久久久久久久| 成人www视频在线观看| 亚洲激情自拍图| 国色天香2019中文字幕在线观看| 国产精品手机播放| 日韩中文字幕在线视频播放| 国产999在线观看| 国内精品一区二区三区四区| 91手机视频在线观看| 国产在线视频2019最新视频| 欧美日本啪啪无遮挡网站| 欧美日本高清视频| 欧美成aaa人片免费看| 欧美丰满片xxx777| 日本国产欧美一区二区三区| 欧美激情免费看| 琪琪第一精品导航| 超碰精品一区二区三区乱码| 亚洲影视九九影院在线观看| 亚洲毛片在线看| 中文字幕久热精品在线视频| 久久久av免费| 欧美在线观看网址综合| 九九视频这里只有精品| 欧美麻豆久久久久久中文| 亚洲专区中文字幕| 亚洲精品久久久久久久久久久| 欧美成人一区在线| 国产亚洲精品久久久久久| 久久99亚洲精品| 亚洲二区在线播放视频| 伊人亚洲福利一区二区三区| 久久久精品国产一区二区| 欧美激情在线观看视频| 欧美日韩国产激情| 日韩中文字幕免费| 国内精品久久久久| 92福利视频午夜1000合集在线观看| 亚洲日韩中文字幕| 欧美日韩亚洲天堂| 日韩中文在线中文网在线观看| 92国产精品久久久久首页| 欧美午夜性色大片在线观看| 欧美成人国产va精品日本一级| 国产一区二区成人| 黄色精品在线看| 亚洲国产精品成人一区二区| 日韩高清a**址| 91精品国产91久久久久| 欧美精品videossex性护士| 久久av红桃一区二区小说| 久久久久久久一区二区| 国产精品久久av| 国产玖玖精品视频| 欧美疯狂xxxx大交乱88av| 日韩av在线免费播放| 亚洲理论片在线观看| 欧美国产高跟鞋裸体秀xxxhd| 欧美日韩成人黄色| 国产有码在线一区二区视频| 97免费中文视频在线观看| 欧美黄网免费在线观看| 国产精品劲爆视频| 少妇久久久久久| 国内精品400部情侣激情| 日韩av免费在线看| 欧美性猛交丰臀xxxxx网站| 亚洲影院色无极综合| 日韩av免费在线看| 欧美日韩日本国产| 国产一区在线播放| 久久综合九色九九| 日韩在线中文字| 深夜福利日韩在线看| 色噜噜亚洲精品中文字幕| 欧美激情精品久久久久久大尺度| 国产欧美日韩精品专区| 欧美日韩一区二区在线播放| 精品久久久久久久久久国产| 久久电影一区二区| 久久亚洲精品一区二区| 搡老女人一区二区三区视频tv| 亚洲午夜色婷婷在线| 狠狠久久五月精品中文字幕| 亚洲欧美综合区自拍另类| 久久久极品av| 美女福利视频一区| 久久久久久久av| 久久艹在线视频| 狠狠色狠狠色综合日日小说| 国外成人在线直播| 国产精品一区二区三区毛片淫片| 久久黄色av网站| 久久久久久综合网天天| 日韩美女写真福利在线观看| 国产不卡视频在线| 在线日韩欧美视频| 日韩av免费在线| 欧美性xxxx| 成人免费午夜电影| 国产97在线视频|