原型模式 - Prototype

109 阅读1分钟

一、定义

是指原型实例指向创建对象的种类,并通过拷贝这些原型创建新的对象,是一种用来创建对象的模式,也就是创建一个对象作为另一个对象的prototype属性。
即:有一个原型实例,基于这个原型实例产生新的实例,也就是“克隆”了。

二、核心

深克隆

三、实现

  • 使用 Object.create(prototype, optionalDescriptorObjects)

const languagePrototype = {
  type: 'Jave',
  getType: function () {
    console.log(this.type + '是最好的语言')
  }
}

const js = Object.create(languagePrototype, {
  type: { value: 'JavaScript' }
})

js.getType() // ==> javaScript是最好的语言
  • 使用 prototype

const lngPrototype = {
  init: function (language) {
    this.language = language || 'Java'
  },
  getType: function () {
    console.log(`我觉得 ${this.language} 是世界上最好的语言`)
  }
}
function javaScript (lng) {
  function F() {}
  F.prototype = lngPrototype;
  const f = new F();
  f.init(lng)
  return f;
}

const lng = javaScript('JavaScript')
lng.getType() // ==> 我觉得 JavaScript 是世界上最好的语言

跳转:设计模式目录