真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

通過說明與示例了解js五種設(shè)計模式

第一種模式:js工廠模式

寧陽ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ 
var Child = new Object(); 
Child.name="李小龍"; 
Child.age="30"; 
Child.lev=lev; 
return Child; 
}; 
var x = Parent(); 
alert(x.name); 
alert(x.lev());

說明:

1.在函數(shù)中定義對象,并定義對象的各種屬性,,雖然屬性可以為方法,但是建議將屬性為方法的屬性定義到函數(shù)之外,這樣可以避免重復(fù)創(chuàng)建該方法

2.引用該對象的時候,這里使用的是 var x = Parent()而不是 var x = new Parent();因?yàn)楹笳邥赡艹霈F(xiàn)很多問題(前者也成為工廠經(jīng)典方式,后者稱之為混合工廠方式),不推薦使用new的方式使用該對象

3.在函數(shù)的最后返回該對象

4.不推薦使用這種方式創(chuàng)建對象,但應(yīng)該了解

第二種模式:js構(gòu)造函數(shù)模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ 
this.name="李小龍"; 
this.age="30"; 
this.lev=lev; 
}; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

說明:

1.與工廠方式相比,使用構(gòu)造函數(shù)方式創(chuàng)建對象,無需再函數(shù)內(nèi)部重建創(chuàng)建對象,而使用this指代,并而函數(shù)無需明確return

2.同工廠模式一樣,雖然屬性的值可以為方法,扔建議將該方法定義在函數(shù)之外

3..同樣的,不推薦使用這種方式創(chuàng)建對象,但仍需要了解

第三種模式:js原型模式

var lev=function(){ 
return "啊打"; 
}; 
function Parent(){ }; 
Parent.prototype.name="李小龍"; 
Parent.prototype.age="30"; 
Parent.prototype.lev=lev; 
var x =new Parent(); 
alert(x.name); 
alert(x.lev());

說明:

1.函數(shù)中不對屬性進(jìn)行定義

2.利用prototype屬性對屬性進(jìn)行定義

3.同樣的,不推薦使用這樣方式創(chuàng)建對象

第四種模式:構(gòu)造函數(shù)+原型的js混合的模式(推薦)

function Parent(){ 
this.name="李小龍"; 
this.age=32; 
};
Parent.prototype.lev=function(){ 
return this.name; 
};
var x =new Parent();
alert(x.lev());

說明:

1.該模式是指混合搭配使用構(gòu)造函數(shù)方式和原型方式

2.將所有屬性不是方法的屬性定義在函數(shù)中(構(gòu)造函數(shù)方式)
將所有屬性值為方法的屬性利用prototype在函數(shù)之外定義(原型方式)

3.推薦使用這樣方式創(chuàng)建對象,這樣做有好處和為什么不單獨(dú)使用構(gòu)造函數(shù)方式和原型方式,由于篇幅問題這里不予討論

第五種模式:構(gòu)造函數(shù)+原型的動態(tài)原型模式(推薦)

function Parent(){ 
this.name="李小龍"; 
this.age=32; 
if(typeof Parent._lev=="undefined"){ 
Parent.prototype.lev=function(){ 
return this.name; 
} 
Parent._lev=true; 
} 
}; 
var x =new Parent(); 
alert(x.lev());

說明:

1.動態(tài)原型方式可以理解為混合構(gòu)造函數(shù),原型方式的一個特例

2.該模式中,屬性為方法的屬性直接在函數(shù)中進(jìn)行了定義,但是因?yàn)?/p>

if(typeof Parent._lev=="undefined"){
Parent._lev=true;
}

從而保證創(chuàng)建該對象的實(shí)例時,屬性的方法不會被重復(fù)創(chuàng)建

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


本文標(biāo)題:通過說明與示例了解js五種設(shè)計模式
本文URL:http://weahome.cn/article/ggigpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部