位置: 编程技术 - 正文

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

  • 借款发生的利息费用
  • 年报会计师审计费用
  • etc发票开票中
  • 一个营业执照可以开几家淘宝店
  • 高铁票抵扣税率怎么计算
  • 预缴企业所得税会计处理
  • 营改增后房地产开发企业需要交哪些税?
  • 企业一般纳税人证明在哪里查询
  • 建筑业小规模纳税人认定标准
  • 如何界定广告
  • 经营性租赁怎么做账
  • 公司租车交税
  • 如何编辑受保护的word文档
  • 通行费发票可以抵扣吗
  • mac怎么设置桌面组件
  • 土建工程成本核算怎么做
  • w7系统怎么用
  • nmap命令
  • 清除cmos数据按钮一直亮
  • 在途物资属于什么科目借贷方向
  • sfx.exe
  • PHP:pg_get_result()的用法_PostgreSQL函数
  • 补缴断交的医保划算吗
  • 什么时编制
  • 装修费怎么记会计科目
  • php 读取文本文件
  • 企业发生的诉讼费用
  • 什么情况下计提信用减值损失
  • laravel模板引擎
  • 汇兑损失是否可以抵扣
  • js身份证正则验证
  • 房地产开发企业增值税怎么算
  • 增值税会自动申报吗
  • 浏览器windows下载
  • python爬取网站数据毕业论文
  • python web开发方向的第三方库有哪些
  • 如何在织梦中设置图片加文字
  • 使用spring可以实现声明式事务吗
  • 为什么银行结息不加入账户
  • 企业的差旅费计入什么科目
  • 个人独资企业取名规则
  • 进项税没入账补入账分录
  • 公司收到银行存款利息回单的会计分录
  • mysql常用命令汇总
  • 生产部门使用的无形资产摊销
  • 个体户怎么交税?
  • mysql8编译安装
  • 换出长期股权投资的会计处理
  • 附加税多计提了怎么做分录
  • 存货的盘盈
  • 预收账款怎么处理
  • 企业的专利收费是多少
  • 如何理解啥意思
  • 期末计提利息怎么算
  • 每月发票认证时间
  • 新成立公司年初余额
  • 小企业建账流程图
  • innodb update 锁
  • window10怎么设置蓝牙
  • ubuntu chsh
  • windows预览版和正式版区别
  • win10桌面上图标
  • Winxp安装光盘修复
  • U盘安装centos 7出现unknown chipset
  • WINDOWS操作系统属于什么操作系统
  • macbookair2015安装win7 单系统
  • Linux下将Mysql和Apache加入到系统服务里的方法
  • Win7系统可以装ie10浏览器么
  • windows 8/10whql
  • ExtJs3.0中Store添加 baseParams 的Bug
  • android打包原理
  • rapidjson使用
  • [置顶]马粥街残酷史
  • 判断文件是否存在 java
  • js函数嵌套函数的return
  • 国税局和税务局合并
  • 税务总局纪律作风
  • 通辽这个地方怎么样
  • 国税软件下载
  • 专家咨询费包括哪些内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设