位置: 编程技术 - 正文

javascript设计模式之工厂模式示例讲解(js设计模式书)

编辑:rootadmin

javaScript工厂方式原始的方式因为对象的属性可以在对象创建后动态定义,这在 JavaScript 最初引入时都会编写类似下面的代码

在上面的代码中,创建对象 car。然后给它设置几个属性:它的颜色是蓝色,有四个门,每加仑油可以跑 英里。最后一个属性实际上是指向函数的指针,意味着该属性是个方法。执行这段代码后,就可以使用对象 car。不过这里有一个问题,就是可能需要创建多个 car 的实例,这显然不是很好的方式。

解决方案:工厂方法要解决该问题,开发者创造了能创建并返回特定类型的对象的工厂函数。例如,函数 createCar() 可用于封装前面列出的创建 car 对象的操作:

调用此工厂函数,将创建新对象,并赋予它所有必要的属性,给 createCar() 函数加上参数,即可为要创建的 car 对象的 color、doors 和 mpg 属性赋值。这使两个对象具有相同的属性,却有不同的属性值。该方法有个不好的地方在于每创建一个car对象(即调用一次createCar函数)都会重复的为每个对象创建showColor 方法,而这时没有必要的而事实上,每个对象都共享同一个函数。于是我们尝试在函数之外去声明其方法属性。

在工厂函数外定义对象的方法有些开发者在工厂函数外定义对象的方法,然后通过属性指向该方法,从而避免这个问题:

在上面这段重写的代码中,在函数 createCar() 之前定义了函数 showColor()。在 createCar() 内部,赋予对象一个指向已经存在的 showColor() 函数的指针。从功能上讲,这样解决了重复创建函数对象的问题;但是从语义上讲,该函数不太像是对象的方法。

推荐整理分享javascript设计模式之工厂模式示例讲解(js设计模式书),希望有所帮助,仅作参考,欢迎阅读内容。

javascript设计模式之工厂模式示例讲解(js设计模式书)

文章相关热门搜索词:js设计模式应用,js设计模式应用,JAVASCRIPT设计模式与开发实践,js的设计模式,js 设计模式,js设计模式应用,javascript 设计,JAVASCRIPT设计模式与开发实践,内容如对您有帮助,希望把文章链接给更多的朋友!

javascript日期格式化示例分享 /***格式化日期*@param{Object}ms表示指定日期与年1月1日午夜间全球标准时间的毫秒数*@returnyear-month-datehh:mm*/Util.parseToDate=function(ms){vardate=(newDate(parseInt(ms)

JS和函数式语言的三特性 首先要有一个概念:并不是一个语言支持函数,这个语言就可以叫做函数式语言。函数式语言中的函数(function),除了能被调用之外,还具有一些其他性

7个JS基础知识总结 1.如何在一个对象上添加属性?方法一:varb={};b["name"]="test";deleteb.name删除对象的属性方法二:b.name="test";2.如何判断一个变量是否声明?typeof(a)=="undefined"

标签: js设计模式书

本文链接地址:https://www.jiuchutong.com/biancheng/373745.html 转载请保留说明!

上一篇:JavaScript的21条基本知识点

下一篇:javascript日期格式化示例分享(javascript日期加减)

  • 工资个人所得税怎么算
  • 增值税专票已经报税作废不了怎么办
  • 不得开具增值税专票情形包括
  • 应交增值税和应交税费
  • 递延收益为什么是非流动负债
  • 价外费用的判断标准
  • 建筑企业小型企业有哪些
  • 营改增后自建厂房抵扣
  • 垫付了医药费保险报销时怎么办
  • 公司出差员工有权拒绝吗
  • 兼营免税业务,如何才能享受免税的优惠政策?
  • 计提本月工资记账凭证怎么填
  • 税控盘没有反写会怎样
  • 小规模开税票怎么开
  • 发改委规定电网企业职工福利费
  • 交付使用资产科目核算
  • 增值税小规模纳税人
  • 税务没有核定印花税
  • 电子发票上传平台失败是什么意思
  • 代开普通发票要什么材料?
  • 已收发票是什么意思
  • 自己使用过的固定资产和旧货有什么区别
  • 服务佣金是什么意思
  • 住房公积金有什么用途和价值
  • 进口应税消费品的组成计税价格为
  • 详谈php编码转换过程
  • win10怎么打开移动中心
  • linux怎么创建一个用户组
  • 工程决算审计费收费标准
  • hotkey osd driver可以卸载吗
  • 转让应收账款是否交税
  • 温哥华瀑布
  • 康沃尔公国范围
  • wordpress使用
  • 库存现金盘亏会计分录无法查明原因
  • php读取excel内容
  • 土地使用权转让法律规定
  • 购进设备抵扣税额
  • 支付境外培训费代扣啥税
  • php怎么读取txt
  • 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用
  • js 数组去重的四种方法
  • 金融机构拆出资金的最长期限
  • 个人转让上市公司原始股
  • 工伤补贴如何做帐
  • 无形资产一般包括哪些权利
  • 企业合并发生的法律服务费影响利润总额吗
  • 开具定额发票应如何做账?
  • 进项税销项税抵扣分录
  • 银行定期存款取一部分怎么算利息
  • 普通发票开具红字发票后发票联怎么处理?
  • 无票收入如何做凭证
  • 月末结转后应交税费应交增值税一般无余额
  • 出口货物不予免税的原因
  • 国际快递能发吗
  • 非营利组织会计科目账务处理
  • mysql could not be resolved: Name or service not known
  • windows8正版
  • xp系统如何加速
  • ubuntu下安装QT教程
  • Ubuntu系统怎么设置root
  • win7系统添加打印机没有USB端口选项
  • winxp开启远程控制
  • schupd.exe - schupd是什么进程 有什么用
  • cocos2djs
  • [置顶]马粥街残酷史
  • django的工作原理
  • unity 调用java
  • 批处理应用实例
  • 安卓系统引导程序
  • js能实现的简单效果
  • vue瀑布流实现
  • 外经证可以不交企业所得税吗
  • 电子税务局待确认授权不能勾选
  • 深圳市电价价目表详解
  • 誊抄什么意思
  • 无锡第三税务分局
  • 税务局 环保税
  • 公司员工开始摆烂怎么办
  • 辽宁省医保明细查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设