J S函數中的工廠模式

雖然Object構造函數或對象字面量都可以用來創(chuàng)建單個對象,但這些方式有個明顯缺點:使用同一個借口創(chuàng)建很多對象,會產生大量的重復代碼。為解決這一個問題,人們開始使用工廠模式的一種變體。

這種模式抽象了創(chuàng)建具體對象的過程,考慮到ECMAScript中無法創(chuàng)建類,開發(fā)人員就創(chuàng)建了一種函數,用函數來封裝以特定接口創(chuàng)建對象的細節(jié),如下:

function creatPerson(name,age,job){

var ?o=new Object(0;

o.name=name;

o.age=age;

o.job=job;

o.sayName=function(){

alert(this.name)

? ? ? };

? ? return 0;

}

var person1=creatPerson("xiaoming",19,"softEngineer");

var person2=creatPerson("xiaohong",16,"Doctor")

函數creatPerson()能夠根據接受的參數來構建一個包含所有必要信息的Person對象。可以無數次的調用這個函數,而每次它都會返回一個包含三個屬性一個方法的對象。工廠模式雖然解決了創(chuàng)建多個相似對象的問題,但卻沒有解決對象識別的問題(即怎樣知道一個對象的類型。)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容