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

首頁(yè) > 開(kāi)發(fā) > JS > 正文

通過(guò)說(shuō)明與示例了解js五種設(shè)計(jì)模式

2024-05-06 16:52:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

第一種模式:js工廠模式

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());

說(shuō)明:

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

2.引用該對(duì)象的時(shí)候,這里使用的是 var x = Parent()而不是 var x = new Parent();因?yàn)楹笳邥?huì)可能出現(xiàn)很多問(wèn)題(前者也成為工廠經(jīng)典方式,后者稱(chēng)之為混合工廠方式),不推薦使用new的方式使用該對(duì)象

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

4.不推薦使用這種方式創(chuàng)建對(duì)象,但應(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());

說(shuō)明:

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

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

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

第三種模式: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());

說(shuō)明:

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

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

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

第四種模式:構(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());

說(shuō)明:

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

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

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

第五種模式:構(gòu)造函數(shù)+原型的動(dòng)態(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());

說(shuō)明:

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘肃省| 安丘市| 海盐县| 深泽县| 五峰| 汉寿县| 庆安县| 溧水县| 遂宁市| 故城县| 门源| 南宫市| 阜平县| 玛沁县| 儋州市| 浠水县| 舞钢市| 同江市| 甘德县| 浑源县| 米脂县| 青阳县| 巴青县| 澳门| 吕梁市| 海丰县| 龙井市| 本溪市| 通山县| 洪江市| 张家港市| 榆中县| 天祝| 东乡族自治县| 信丰县| 敦煌市| 东港市| 尉犁县| 浮山县| 来宾市| 榆林市|