国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript高級程序設計 閱讀筆記(十三) js定義類或對象

2024-05-06 14:21:24
字體:
來源:轉載
供稿:網友
工廠方式

  創建并返回特定類型的對象。  

代碼如下:
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();
oCar2.showColor();

  缺點:方法重復創建了。如在上面的調用示例中,oCar1和oCar2均有自己的shoColor方法,但這個是可以共用的。

構造函數方式

  示例:

代碼如下:
function Car(sColor,iDoors,iMpg){
this.color=sColor;
this.door=iDoors;
this.mpg=iMpg;
this.showColor=function(){
alert(this.color);
}
}

  調用示例:
代碼如下:
var oCar1=new Car("red",4,23);
var oCar2=new Car("blue",3,25);

  缺點:跟工廠方式一樣,方法重復創建了。

原型方式

  本方式利用了對象的 prototype 屬性,可把它看成創建新對象所依賴的原型。這里用空構造函數來設置類名,然后所有的屬性和方法都被直接賦予 prototype 屬性,重寫前面的例子,代碼如下:

代碼如下:
function Car(){
}

Car.prototype.color="red";
Car.prototype.doors=4;
Car.prototype.mpg=23;
Car.prototype.showColor=function(){
alert(this.color);
}


  調用:
代碼如下:
var oCar1=new Car();
var oCar2=new Car();

  缺點:不能通過給構造函數傳遞參數初始化屬性的值

混合的構造函數/原型方式

  聯合使用構造函數和原型方式,示例如下:

代碼如下:
function Car(sColor,iDoors,iMpg){
this.color=sColor;
this.door=iDoors;
this.mpg=iMpg;
}

Car.prototype.showColor=function(){
alert(this.color);
}

  調用示例:
代碼如下:
var oCar1=new Car("red",4,23);
var oCar2=new Car("blue",3,25);

  優點:無內存浪費,創建方便。

  這種方式是ECMAScript采用的主要方式。

動態原型方法

  使用混合的構造函數/原型方式把對象的方法放在了對象外面定義,讓人感覺不是那么面向對象,沒有在視覺上進行很好的封裝,因此產生了動態原型方法:

代碼如下:
function Car(sColor,iDoors,iMpg){
this.color=sColor;
this.door=iDoors;
this.mpg=iMpg;
if(typeof Car._initialized=="undefined"){
Car.prototype.showColor=function(){
alert(this.color);
};
Car._initialized=true;
}
}

作者:Artwl
出處:http://artwl.cnblogs.com
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 沁源县| 闵行区| 甘谷县| 成都市| 西吉县| 乳山市| 车致| 自治县| 古田县| 如皋市| 宁乡县| 崇信县| 图木舒克市| 岑溪市| 普兰县| 武功县| 云梦县| 贵溪市| 鄂托克旗| 迁安市| 德化县| 汉阴县| 青田县| 永昌县| 陕西省| 同心县| 无锡市| 盘山县| 缙云县| 武城县| 丹阳市| 濮阳市| 阿鲁科尔沁旗| 张家川| 法库县| 府谷县| 呼图壁县| 六枝特区| 宝山区| 太谷县| 梁山县|