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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 11:19:33
字體:
來源:轉載
供稿:網友

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

說明:

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

2.引用該對象的時候,這里使用的是 var x = Parent()而不是 var x = new Parent();因為后者會可能出現很多問題(前者也成為工廠經典方式,后者稱之為混合工廠方式),不推薦使用new的方式使用該對象

3.在函數的最后返回該對象

4.不推薦使用這種方式創建對象,但應該了解

第二種模式:js構造函數模式

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.與工廠方式相比,使用構造函數方式創建對象,無需再函數內部重建創建對象,而使用this指代,并而函數無需明確return

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

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

第三種模式: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.函數中不對屬性進行定義

2.利用prototype屬性對屬性進行定義

3.同樣的,不推薦使用這樣方式創建對象

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

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

說明:

1.該模式是指混合搭配使用構造函數方式和原型方式

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

3.推薦使用這樣方式創建對象,這樣做有好處和為什么不單獨使用構造函數方式和原型方式,由于篇幅問題這里不予討論

第五種模式:構造函數+原型的動態原型模式(推薦)

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.動態原型方式可以理解為混合構造函數,原型方式的一個特例

2.該模式中,屬性為方法的屬性直接在函數中進行了定義,但是因為

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

從而保證創建該對象的實例時,屬性的方法不會被重復創建

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 祁东县| 宁晋县| 云南省| 南丰县| 青铜峡市| 蓬溪县| 万山特区| 溆浦县| 雅安市| 彰化市| 进贤县| 依安县| 宁陵县| 新蔡县| 修武县| 滨州市| 淳安县| 临夏市| 溆浦县| 定日县| 平乐县| 临漳县| 全南县| 石屏县| 来安县| 盘锦市| 乌兰察布市| 盐津县| 新巴尔虎右旗| 呼图壁县| 庆元县| 山东省| 诸城市| 时尚| 东乌| 长汀县| 承德市| 福泉市| 黑水县| 措勤县| 隆安县|