工廠功能
工廠函式只是一個返回物件的函式。
工廠函式不需要使用 new
關鍵字,但仍可用於初始化物件,如建構函式。
通常,工廠函式用作 API 包裝器,就像 jQuery 和 moment.js 一樣 ,因此使用者不需要使用 new
。
以下是最簡單的工廠功能; 使用引數並使用它們來建立具有物件文字的新物件:
function cowFactory(name) {
return {
name: name,
talk: function () {
console.log('Moo, my name is ' + this.name);
},
};
}
var daisy = cowFactory('Daisy'); // create a cow named Daisy
daisy.talk(); // "Moo, my name is Daisy"
通過將它們包含在返回的物件之外,可以很容易地在工廠中定義私有屬性和方法。這樣可以封裝你的實現細節,因此你只能將公共介面公開給你的物件。
function cowFactory(name) {
function formalName() {
return name + ' the cow';
}
return {
talk: function () {
console.log('Moo, my name is ' + formalName());
},
};
}
var daisy = cowFactory('Daisy');
daisy.talk(); // "Moo, my name is Daisy the cow"
daisy.formalName(); // ERROR: daisy.formalName is not a function
最後一行會出錯,因為函式 formalName
在 cowFactory
函式內被關閉。這是一個關閉 。
工廠也是在 JavaScript 中應用函數語言程式設計實踐的好方法,因為它們是函式。