位置: 编程技术 - 正文

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

  • 营业外收入要交企业所得税吗
  • 赠与房屋再次出售的缴税问题有哪些
  • 小规模不动产租赁增值税税率是多少
  • 利润表的所得税费用怎么填
  • 经营所得与劳务所得的税率
  • 工会经费计税基数包含支付职工的辞退福利
  • 新准则下怎么调整长期股权投资损益调整
  • 建筑行业简易计税账务处理
  • 已纳消费税税款允许扣除的是
  • 顾客退货补差价怎么做账?
  • 成本暂估跨年度要怎么处理?
  • 房地产开发企业预缴增值税
  • 商品过期可以向商家索要赔偿吗
  • 个人转租工厂需交什么税
  • 建筑业交税会计分录
  • 发票的受票方是什么
  • 普票3点怎么算
  • 会计案例分析题万能模板
  • 已抵扣发票丢失如何处理
  • 购金蝶软件记什么科目
  • 公司增资需要什么
  • 增值税专用发票和普通发票的区别
  • 外包物流适用范围
  • 适用增值税简易计税的项目
  • 财务科目明细表格模板
  • 1697509557
  • 员工可以一起辞职吗
  • 亏损计提递延
  • 0x000000a5蓝屏代码是什么意思
  • 国有资产租赁合同问题
  • 融资租赁货车
  • 装修费怎么记会计科目
  • 零申报怎么做报表
  • vue clonedeep
  • Ubuntu18.04安装cuda10.2
  • 拨出专款年末结转
  • md5 python3
  • 一般纳税人在哪里报税
  • 今天收到的
  • 织梦手机端
  • 股东借款作为项目投入的依据
  • 税额和税款是一回事吗
  • 小规模劳务派遣公司税率
  • 收到生育津贴入什么科目
  • 商业收入税收怎么收费
  • SQLServer2005 XML数据操作代码
  • mysql设置uuid
  • 银行存款日记账电子表格模板
  • 委托加工业务中需要计算缴纳增值税销项税
  • 建筑业异地预缴企业所得税怎么算
  • 管理费用如何核算
  • 已使用的存货,计价方式不允许修改
  • 外购材料的核算方法有
  • 合同负债属于什么账户
  • 发票报销抵扣税点是给谁
  • 本期已认证且不抵扣怎么申报
  • 土地出让金抵减销项税计算
  • 已核销的坏账又收回时应当及时入账,防止形成账外款
  • mysqldump命令在哪里执行
  • 在unix系统中采用的页面置换
  • 安装最新的powershell,了解新功能和改进
  • 什么叫脚本错误
  • windows active directory功能
  • win7系统只有一个鼠标箭头然后重启
  • mac uuid查询
  • Mac如何使用Excel
  • mac图片格式怎么转换jpeg
  • Win7系统启动qq无法访问个人文件怎么解决
  • win7禁用全屏优化在哪
  • win7c盘winsxs
  • Win7电脑开机桌面黑屏只有鼠标
  • 微软64位Win10 Mobile很快到来 Surface Phone有望搭载
  • cocos2dx怎么用
  • 黑马程序员android移动开发基础教程
  • angular form表单
  • android studio 开发语言
  • jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
  • 税务咨询电话是什么
  • 江苏电子税务局客服电话
  • 税务发票小助手 小程序二维码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设