雖然Object構(gòu)造函數(shù)或?qū)ο笞置媪慷伎梢杂脕?lái)創(chuàng)建單個(gè)對(duì)象,但這些方式有個(gè)明顯缺點(diǎn):使用同一個(gè)借口創(chuàng)建很多對(duì)象,會(huì)產(chǎn)生大量的重復(fù)代碼。為解決這一個(gè)問(wèn)題荔茬,人們開始使用工廠模式的一種變體。
這種模式抽象了創(chuàng)建具體對(duì)象的過(guò)程竹海,考慮到ECMAScript中無(wú)法創(chuàng)建類慕蔚,開發(fā)人員就創(chuàng)建了一種函數(shù),用函數(shù)來(lái)封裝以特定接口創(chuàng)建對(duì)象的細(xì)節(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")
函數(shù)creatPerson()能夠根據(jù)接受的參數(shù)來(lái)構(gòu)建一個(gè)包含所有必要信息的Person對(duì)象孔飒。可以無(wú)數(shù)次的調(diào)用這個(gè)函數(shù)艰争,而每次它都會(huì)返回一個(gè)包含三個(gè)屬性一個(gè)方法的對(duì)象坏瞄。工廠模式雖然解決了創(chuàng)建多個(gè)相似對(duì)象的問(wèn)題,但卻沒有解決對(duì)象識(shí)別的問(wèn)題(即怎樣知道一個(gè)對(duì)象的類型甩卓。)