91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-22 21:08:55 來源:腳本之家 閱讀:157 作者:全棧弄潮兒 欄目:web開發

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗源县| 拉孜县| 临西县| 东宁县| 临江市| 红河县| 绥化市| 康乐县| 达拉特旗| 汤阴县| 黎城县| 商城县| 托克逊县| 辽阳市| 偃师市| 马鞍山市| 甘德县| 藁城市| 喀喇沁旗| 文昌市| 阳朔县| 璧山县| 西峡县| 广州市| 荥阳市| 正镶白旗| 阿巴嘎旗| 航空| 冕宁县| 望江县| 噶尔县| 景德镇市| 张家口市| 小金县| 三门县| 正定县| 黎川县| 临泽县| 海安县| 江口县| 大关县|