工厂函数

  当一个函数返回一个对象时,我们称之他为 工厂函数(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值