之前對建構函式和工廠函式有一定的困擾,究竟什麼是工廠函式什麼才算是建構函式。在網上查了他兩的區別後發現大多數講的都不盡人意,可以說是越看越懵,後來被我們老大看到了,很有意思的說,這個他們說的都不是那麼一回事,算了我來和你講吧。
「我問你,工廠主要是做什麼的?」
「額…製造大量相同東西的…乙個地方?」
「差不多,但不是都是相同的,也可以做不一樣的,就像做鞋的工廠專門製造各種鞋子,做衣服的工廠會做各種衣服一樣,工廠函式也是差不多這個道理。先給你看乙個例子。」
function dogs(name,color)
function person(name,age,job)
...function my_factory(model,property)
//工廠函式的使用方法
wangcai = my_factory('dogs',);
xiaoming = my_factory('person',);
//建構函式的使用方法
erha = new dogs('erha','gray');
在這裡面,my_factory()就是乙個工廠函式嗎?不,不完全是,要把上面的兩個建構函式dogs()和person()結合起來才是乙個整個工廠函式。
按照我的理解建構函式和工廠函式的區別在於,工廠函式與建構函式屬於包含關係。
乙個建構函式通過new乙個新的物件出來使用,在函式內部通過this來新增物件內部成員,他只能為物件型別。同時一般我們定義乙個建構函式首字母要記得大寫。
而工廠函式是需要在內部建立物件,並且必須要有return 返回值。
建構函式可以重寫但是工廠函式不可以。
建構函式通過person.prototype = {}
但我還有一點疑惑,建構函式裡面可以直接放方法嗎,不是裡面只是做初始化使用的嗎,我看到很多人定義乙個建構函式是這樣的:
function
createperson
(name);
}
其實這樣的寫法不是很標準,我們老大和我說應該像下面這種,不管先記著(這裡提到了es6中class的用法)
class
createperson
function
showname
()}
工廠函式 建構函式
顧名思義,就好比乙個工廠一樣,可以批量製造某種型別的東西。其實說白了就是封裝了個方法減少重複工作 function animal name,return obj let monkey animal 猴子 母 console.log monkey.name 猴子 monkey.say 我的性別是母複製...
C 類建構函式 析構函式 學習筆記
1 類的建構函式 類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行 建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void 建構函式可用於為某些成員變數設定初始值。include using namespace std class line 成員函式定義...
know工廠函式and建構函式
工廠函式涉及到了設計模式級別的概念,無論是物件導向的程式設計還是面向過程的,都適用,而建構函式是語法級別的概念,需要物件導向的語法特性來支援,例子如下 1.工廠函式 function person fatory name,age,person.name name person.age age per...