帝国间的战争已经到了白热化阶段,战场惊人的消耗力使得每个国家迫切的需要提要各种装备的生产力,以便更快更好的投入到战场的使用中,因此如何制造装备成为了各国装备制造人员首要的任务。

因此我们发明了如下几种用生产机制造装备的方法:工厂模式,构造函数模式,原型模式,以及他们的变种模式。身为装备制造人员,今天我先为帝国的各位长官介绍一下工厂模式,构造函数模式,原型模式。以制造多功能战场铠甲为例。

首先来说一下工厂模式。在我们的基地工厂内有一台铠甲生产机的全息影像。全息影像内部有一个生产模块,它是独立于生产机的,它是真实存在的,不是全息影像。它可以生产一副铠甲。只要我们告诉这个全息影像要生产铠甲的数据后,生产模块可制造一副铠甲。虽然生产模块制造了铠甲,但是全息影像却没有将这个装备类型标注为铠甲类型。因此装备检测仪instanceof却无法检测出这件装备的类型(因为生产机根本没有标注),它不可能知道这到底是一副铠甲还是一辆战场巡逻车。

一种可以让铠甲被装备检测仪检测出类型的模式诞生了。

它就是构造函数模式。使用构造函数模式可以生产任何一种可以被装备检测仪检测到装备类型的装备。在每台生产机内都有一个独特的模块,我们把它称为this,掌握了生产机里生产装备所需的零部件。this不同于独立的铠甲生产模块(铠甲生产模块也有自己的this),它本来就是生产机的一部分,有生产机就有this。这一次我们不让铠甲生产模块来生产,让this来为我们生产。 首先,我们使用new来生成了一个生产机全息影像的新实例,this便成为了实例生产机的一部分,它为实例生产机生产铠甲,而不是全息影像去生产。此时可以开始生产一副铠甲。生产完成后,我们需要为铠甲取一个名字,比如黑铠甲。黑铠甲的类型便是铠甲。

最后我们说一说原型模式。原型模式是一种非常具有魔法的模式。当战士身穿重型铠甲战场作战时,却遇见了敌方的穿甲弹士兵,此时我们只需要在生产基地里生产机全息影像模型的数据替换一下,就可以远程为战士们更新敏捷型装备。在每个全息影像内,都有一个prototype属性,这个属性可以指向一个原型对象。而所有实例化的生产机都不过是使用这个原型对象的魔法复制品。当战士们穿着魔法复制品在战场作战时,他们可以为自己的铠甲替换上自己的部件,让自己的部件在铠甲上发挥作用,而原先的则失去了作用。如果想要原型对象里的部件起作用,只需要将自己的部件删除即可。更加奇妙的是,只要原型对象更换了零部件,那么魔法复制品就会立刻更新。那么如何检测当前铠甲部件是战士们自己配的还是原型对象的呢,这里有一个检测器,只要是自己配的,那么就会返回正确,如果不是那么就返回错误。还有一个检测器,不管是自己配的还是原型对象的,只要存在这个部件就会返回正确。我们可以根据这两个检测器才确定原型对象里是否存在这个部件。

讲解完毕。

JavaScript帝国战争-创建对象篇相关推荐

  1. JavaScript 基础知识 - 入门篇(二)

    11. 函数 11.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余: 函数可以封装一段重复的javascript代码, ...

  2. JavaScript设计模式系列—模式篇总结(上)

    转载请注明预见才能遇见的博客:http://my.csdn.net/ 原文地址:https://blog.csdn.net/pcaxb/article/details/102517956 JavaSc ...

  3. 深入理解javascript函数系列第二篇——函数参数

    前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数.本文是深入理解javascript函数 ...

  4. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  5. JavaScript 基础知识 - DOM篇(二)

    7. 节点操作 7.1 节点的属性 节点分类: 标签节点 文本节点 属性节点 注释节点 节点常用的属性: nodeType:节点的类型 nodeName:节点名称 nodeValue:节点值 常见的节 ...

  6. Javascript第六章JavaScript中构造器创建对象第二课

    Javascript第六章JavaScript用new创建对象第一课 https://blog.csdn.net/qq_30225725/article/details/89304586 Javasc ...

  7. Javascript第六章JavaScript用new创建对象第一课

    Javascript第六章JavaScript用new创建对象第一课 https://blog.csdn.net/qq_30225725/article/details/89304586 Javasc ...

  8. JavaScript 进阶知识 - Ajax篇

    Ajax 前言 前面我们已经学习了js基础知识和一些简单的特效,基本上已经能够写出一个带有特效的静态页面了,为什么还要称之为静态页面呢?因为网页里的数据都是写死的,真正的工作中,我们是要通过Ajax技 ...

  9. 视频教程-JavaScript - 人工智能 五子棋AI篇-JavaScript

    JavaScript - 人工智能 五子棋AI篇 全栈开发工程师,现职于北京一家学院的全栈教学主任. 8年前端开发经验.4年移动端开发经验.4年UI设计经验.3年一线教学经验. 精通Node.JS.P ...

最新文章

  1. BZOJ4129: Haruna’s Breakfast
  2. [解决]Win7+Tomcat5.5 只能通过localhost或计算机名访问
  3. hdu3652(数位dp)
  4. JAVA 测试日期的不同显示格式
  5. 未来的5年内,我为什么不看好“AI+教育”
  6. 学会这 10 种定时任务,我有点飘了
  7. postfix+dovecot+maildrop+mailscanner+clamav+spamassassin搭建rhel6平台邮件服务器
  8. 耶路撒冷三千年(笔记)
  9. 黑苹果 macos 教程
  10. RAID磁盘阵列介绍
  11. JavaScript中onblur事件
  12. 集群渲染和渲染农场是什么意思?跟云渲染有什么关系?
  13. 疯狂模渲大师链接永久是最新版|怎么安装客户端并激活素材库联系作者加载自营专属素材扩展包高效使用超一流辅助插件脚本工具的步骤教程?...
  14. php 考试试题id,【模考来啦】2021年3月21日时政试题四大考点
  15. 【程序9】题目:要求输出国际象棋棋盘
  16. 破解企业卓越运营难点,做好研发质量管理闭环,从“救火战役”,到“一次做对”
  17. 健身管理系统 -像微信一样简单的智能健身房管理系统
  18. 利用CMS漏洞渗透并获取某服务器权限
  19. selenium切换iframe框架案例——翻页爬取网易云音乐歌单作者和名称
  20. 趣图 | 一图详解520最强脱单攻略!

热门文章

  1. 数据结构--串、数组、广义表
  2. 驶向智能海洋深处,华为存储的无尽想象
  3. Android系统源码编译环境搭建(清华镜像,想编译什么版本都可以,只是有JDK和make的版本要求)
  4. 熔化焊包括哪五种_电焊方法有哪些 几种焊接方法对比 焊接技术分类
  5. 模糊查询 按字数多少排序
  6. 有道云笔记android手写,有道云笔记Android新版发布 手写更逼真
  7. android(MTK)驱动层读取摄像头ID失败问题
  8. Mendix设计模式 - 回调
  9. 3.6 局域网(以太网与IEEE 802.3、IEEE 802.11、)
  10. 【网络安全】考这些证书,不仅是高薪,更是人生巅峰!