js中建構函式和工廠函式的區別

時間 2021-08-30 10:12:06

1樓:仰望yu期待

雖然object建構函式或物件字面量都可以建立單個物件,但是這些方式有個明顯的缺點:使用同乙個介面建立很多物件,會產生大量重複的**。為了解決這個問題,就可以使用工廠模式來建立物件。

1.工廠模式:

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

function createperson(name, age, job) ;

return o;

}var person1 = createperson('zxj', 23, "software engineer");

var person2 = createperson('sdf', 25, "software engineer");

在示例中我們可以看到,工廠模式雖然解決了建立多個相似物件的問題,但沒有解決物件識別的問題(在示例中,得到的都是o物件,物件的型別都是object)。

2.構造模式:

ecmascript中的建構函式可以用來建立特定型別的物件。像object和array的原生的建構函式,在執行時會自動出現在執行環境中。此外,也可以建立自定義的建構函式,從而定義自定義物件型別的屬性和方法。

**如下所示:

function createperson(name, age, job) ;

}var person1 = new person('zxj', 23, "software engineer");

var person2 = new person('sdf', 25, "software engineer");

2樓:育知同創教育

建構函式與工廠函式之間差異:

1.工廠函式需要建立物件,以及必須有返回值2.工廠函式針對的都是object的物件模型,而建構函式可以匹配自定義的物件模型

即前者不論建立什麼都只有乙個xx instanceof object而後者根據自定義名而定型別,如上舉例所示

3.建構函式弊端,如果在全域性中定義相同的區域性變數,容易造成全域性汙染,因為this.xx如果在區域性獲取不到,就會去全域性中獲取

4.建構函式可以重寫,可以在全域性中新增新屬性和方法person.prototype = {},但工廠函式只能在區域性新增

各自適用場合:

建構函式:適應用於大型專案,屬性以及方法時常變換的專案工廠函式:適應用於小型專案,或者正在製作過程還沒有成型的專案

c 中的析構函式與建構函式的區別

c 中的析構函式與建構函式的區別主要是功能上的區別 建構函式 是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的乙個類可以有多個建構函式 可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。析構函式 dest...

C 中的建構函式問題,c 建構函式的問題

建構函式一般用來對類中的資料成員進行初始化工作,但並不是要對全部資料初始化,你只需要選擇自己需要的資料進行賦值即可。其實這一點從預設的建構函式也能看出來 當你沒有顯示的寫乙個建構函式的時候,編譯器會為你提供乙個預設的建構函式,它沒有引數,只有乙個空語句,也就是說它沒有對任何資料成員進行初始化。由於構...

c中子類建構函式中如何呼叫父類建構函式

四捨 入 class a class b a 子類的子類呼叫父類中的隱藏成員 一般情況,在呼叫父類成員時子2代和子1代沒什麼區別。但如果子1代隱藏父類成員,情況就會不同。像上面的情況,son隱藏了父類的成員變數name和成員方法tellname 如果再有乙個類grandson繼承son,那grand...