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

首頁 > 語言 > JavaScript > 正文

javascript 混合的構造函數和原型方式,動態原型方式

2024-05-06 14:12:31
字體:
來源:轉載
供稿:網友
我們日常JS編程中最常用的方式 有下面2種:
1.混合的構造函數和原型方式 (重點)
代碼如下:
function car (sColor,iNumbers){ // 構造函數只用來定義對象的所有非函數屬性,即對象的屬性
this.color = sColor;
this.numbers = iNumbers;
this.dirvers = new Array ("Jone","Leon");
}
car.prototype.showColor = function (){ // 原型方式只用來定義對象的所有函數屬性,即對象的方法
alert(this.color);
}
var car1 = new car("red");
var car2 = new car("yellow");
car1.showColor)();
car2.showColor)();

總結:當你創建(new)一個新的對象實例car1和car2的時候,car1和car2都繼承函數對象car的所有的非函數屬性;此時在car函數外面給car函數對象的原型里面生成一個showColor方法,此時car1和car2都會引用car的原型里面的showColor方式,如果把原型方法放進car函數體里面,那么此時car1和car2不是引用的關系,而是每執行一次函數,就構建一次showColor函數,如果有100個car,那么就要重復構造100個函數。所以要把非函數屬性和函數屬性分開來寫。
2.動態原型方式 (重點)
代碼如下:
function car (sColor,iNumbers){ // 構造函數只用來定義對象的所有非函數屬性,即對象的屬性
this.color = sColor;
this.numbers = iNumbers;
this.dirvers = new Array ("Jone","Leon");
if(typeof car._initialized=="undefined"){ //此時此刻,這里的car._initialized成立,繼續執行下面的函數
car.prototype.showColor = function (){
alert(this.color);
}
}
car._initialized = true; //
執行到這里就停止再也不在執行第二次,因為此時此刻,car._initialized只是函數的屬性,而不是函數對象的原型屬性,如果是原型屬性的話,new一個函數對象的實例,就會改變函數里面原型對象的屬性,那么就會重復構造showColor這個函數。正因為是這個原因,當car._initialized等于undefined的時候,執行一次showColor,最后得到的car._initialized=true,這個時候改變的是函數的屬性,而不是函數原型的屬性,所以外部new一個對象實例根本無法改變函數的屬性,所有紅色部分的代碼就是為了做一件事情:只執行紅色代碼之間的方法,并且每種方法只有一次,不會重復執行!
}
var car1 = new car ("red");
var car2 = new car ("yellow");
car1.showColor();
car2.showColor();

總結:不管是利用上面2種方式的那一種,都可以達到相同的效果!
方法1:混合的構造函數和原型方式,相當于把非函數屬性和一般屬性分開來寫,這樣new 新對象的時候,不會重復構造新函數,此時引用的知識函數對象的原型方法和函數對象的屬性。但是,代碼看起來沒有封裝起來而且,不影響任何東西。
方法2:完全利用JAVA的編程代碼風格來實現JS的編程。這樣的好處是讓整個函數看起來像是把屬性和方法都“封裝”在一個函數體內,看起來更像一個“類”。(溫故知新:JS中其實沒有類,你要說有類,就可以把它看做一個function類),缺點是在于利用if()語句看起來不是很友好而已。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 建德市| 兴安县| 浮山县| 枞阳县| 冷水江市| 鱼台县| 旅游| 玉屏| 马关县| 昌图县| 铅山县| 清流县| 武隆县| 法库县| 尖扎县| 乾安县| 册亨县| 黄浦区| 临湘市| 宝丰县| 松溪县| 兴文县| 岑溪市| 左权县| 尼木县| 云南省| 敦煌市| 登封市| 会东县| 盐山县| 迭部县| 漾濞| 苏尼特右旗| 利辛县| 来凤县| 莱西市| 无锡市| 泸州市| 巴彦淖尔市| 墨江| 清涧县|