工厂函数

  当一个函数返回一个对象时,我们称之他为 工厂函数(factory function)

  

function createJelly() {
  return {
    type: 'jelly',
    colour: 'red'
    scoops: 3
  };
}

  组合工厂函数

  

function createJelly() {
  return {
    type: 'jelly',
    colour: 'red',
    scoops: 3
  };
}

function createIceCream(flavour='Vanilla') {
  return {
    type: 'icecream',
    scoops: 3,
    flavour
  }
}

function createDessert() {
  return {
    type: 'dessert',
    bowl: [
      createJelly(),
      createIceCream()
    ]
  };
}

  我们可以组合工厂函数来构建任意复杂的对象,这不需要我们结合使用 new 或 this

function Trifle() {
  Dessert.apply(this, arguments);
}
 
Trifle.prototype = Dessert.prototype;
 
// 或者
 
class Trifle extends Dessert {
  constructor() {
    super();
  }
}

// A trifle *is a* dessert 蛋糕*是*甜点
// A trifle *has* layers of jelly, custard and cream. It also *has a* topping.
// 蛋糕 *有* 果冻层,奶酪层和奶油层,顶部还 *有* 装饰配料。
 
function createTrifle() {
  return {
    type: 'trifle',
    layers: [
      createJelly(),
      createCustard(),
      createCream()
    ],
    topping: createAlmonds()
  };
}

异步的工厂函数

并非所有工厂都会立即返回数据。例如,有些必须先获取数据。

在这些情况下,我们可以返回 Promises 来定义工厂函数。

原文地址:https://www.cnblogs.com/yiyi17/p/9143927.html