JS中的工廠模式與建構函式模式

2021-08-20 13:14:57 字數 927 閱讀 2254

ecmascript中無法建立類,開發人員就發明了一種函式,用函式來封裝以特定介面建立物件的細節,如下

///工廠模式

function creatperson(name,age,job) ;

o.name = name;

o.age = age;

o.job = job;

o.sayname = function () ;

return o;

}var person1 = creatperson("nike",29,"software engineer");

console.log(person1);

函式creatperson能夠根據接收的引數來構建乙個包含所有必要資訊的person物件,可以無數次呼叫。

雖然工廠模式解決了建立多個相似物件的問題,但是沒有解決物件識別的問題(即怎麼知道乙個物件的型別);

這就出現了一種新模式:建構函式模式

///建構函式模式

function person(name,age,job) ;

}var person2 = new person("adidas",26,"soft");

在如上**中我們用person函式取代了工廠模式的函式方法,他們的不同有三點:

1.沒有顯示的建立物件;

2.直接將屬性和方法賦給了this物件;

3.沒有return;

同時也要注意到person函式名使用了首字母大寫p;(建構函式都應該以乙個大寫字母開頭,非建構函式應以乙個小寫字母開頭);

要建立person的新例項,必須使用new 操作符。

呼叫建構函式的步驟有4個:

1.建立乙個新物件;

2.將建構函式的作用於賦值給新物件

3.執行建構函式中的**

4.返回新物件

工廠模式與建構函式模式

簡單工廠模式 以object建構函式或字面量的方式建立物件有著重複性,會產生大量重複 的缺陷,由此,便出現了工廠模式。function createobj name,age var obj1 createobj 小明 66 var obj2 createobj 小白 13 console.log o...

JS中的工廠模式和建構函式模式

工廠方法建立物件 function createperson name age gender return obj var obj2 createperson 豬八戒 18 男 var obj3 createperson 孫悟空 18 男 obj2.say 豬八戒 obj3.say 孫悟空使用工廠方...

JS設計模式 建構函式模式(2)

function car model,year,miles var tom new car 大叔 2009,20000 var dudu new car dudu 2010,5000 console.log tom.output console.log dudu.output 問題是output 在...