位置: 编程技术 - 正文

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日期加减)

  • 临时税务登记的小规模纳税人 个人所得税如何申报
  • 预包装食品销售流程图
  • 金税四期如何应对
  • 实收资本记账凭证摘要怎么写
  • 损益类结转本年利润摘要
  • 福利费进项税额转出会计分录账务处理
  • 企业股权资本的组成
  • 服务性单位从事的是餐饮中介服务
  • 现金流管理模式
  • 股东转入投资款
  • 企业对外借款是怎么规定的
  • 库存半成品属于什么会计科目
  • 怎样查询单位上月社保缴纳情况
  • 增值税扣完税款还能更改吗
  • 注册资本没有缴足前贷款利息
  • 借款余额在借方说明什么
  • 库存商品的账面余额是什么意思
  • 发生工伤事故先怎么办
  • 仲裁委判决还能上诉吗
  • 投资款需要缴纳增值税吗
  • 1697510006
  • 网速怎么限制10mb以内
  • php生成验证码的方法
  • 修改插入点闪烁光标的宽度
  • 向国外个人支付的佣金是否缴纳个人所得税
  • 如何判定增值税发票真伪
  • 增值税专用发票几个点
  • 返还土地出让金如何追缴的
  • FUXA个人学习总结(一)
  • 在申报季度企业所得税时,残疾人工资可以加计扣除吗
  • 怎么安装vue环境
  • 以前年度少记税金及附加
  • 成本降低率是什么意思
  • 使用spring框架,大概有哪些步骤
  • 消耗性生物资产的账务处理
  • 认缴倒闭无力实缴强制执行
  • kibana 教程
  • 股权转让受让方委托书
  • 固定资产清理净损益怎么计算出来的
  • 应交增值税进项税额为什么记借方
  • 普通发票的开具规定是?
  • sql server查询语句大全讲解
  • 原来的预提费用取消后放哪里
  • 未分配利润实际没有钱分配是什么原因
  • 收到单位借款如何入账
  • 哪些员工出差的多
  • 汇算清缴补缴税款会计分录
  • 换下来的旧电池还有用吗
  • 免征增值税账务处理办法
  • 收到增值税专用发票会计科目
  • 小微企业a201010表怎么填
  • 预付账款属于资产类科目
  • 贷款利息天数怎么算的
  • 预付调整到其他应付款
  • 亏损太多账务如何处理
  • 会计收入的定义和分类
  • 管理费用业务招待费包括哪些
  • ubuntu安装教程14.04
  • 微软系统无法开机怎么办
  • 让Windows XP、2003、2008自动登录的设置
  • win10快速操作怎么调出来
  • win7桌面怎么设置到d盘
  • win8.1怎么关机快捷键
  • win7开机没反应怎么办
  • win7共享打印机提示0x000709
  • linux系统怎么弄
  • 用什么命令最简单
  • cocos2dx 2.2.2
  • jquery怎么写
  • android PercentRelativeLayout 支持百分比来设置控件的宽高
  • linux生成文件
  • u盘通过什么读写数据
  • js正则匹配特殊符号
  • python语言怎么用
  • linux怎么使用
  • js中倒计时器怎么实现
  • EasyTouch Broadcast messages选项在js和c#下的用法
  • 彩票中奖归出钱人还是中奖人
  • 国税发票真伪查询手机怎么查
  • 请领导审核怎么说
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设