位置: 编程技术 - 正文

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

  • 个人所得税可以不交税吗
  • 纳税登记的内容
  • 税收 特征
  • 偷税与漏税的界限是
  • 没有支付运费会怎样
  • 企业买车算固定收入吗
  • 猪肉是否免税
  • 公司给员工购买意外险怎么做账
  • 注销地税需要缴纳什么税费
  • 一个公司控股另一个公司
  • 金税盘应用程序中发生了未经处理的异常
  • 分配现金股利的现金流
  • 建筑施工企业检查的内容包括什么
  • 劳保统筹费用
  • 土地使用税与房产税的区别
  • 建筑业的合理避税
  • 关税减免有哪些类型?
  • 个体工商户是否属于法人
  • 维修材料属于什么会计科目
  • 个人税收起征点调整
  • 已预缴的城建税会计分录
  • 未确认融资费用的期初余额
  • 税务局报表利润表本期金额
  • 车间的制造费用包括哪些
  • profiler.exe - profiler是什么进程 有什么用
  • 腾讯手游助手卡顿严重
  • 网络适配器感叹号代码43
  • 广告补贴申请报告
  • 如何计算每个月的天数
  • 成本法 合并
  • 王者荣耀电脑版怎么键盘操作
  • win8电脑系统还原
  • 工作完工结算是什么意思
  • 报错专业了可不可以改
  • 增值税即征即退操作流程
  • 企业债权人进行财务分析的根本目的是关心企业的
  • 用土地抵账合法吗
  • 巴芬岛旅游
  • code particle
  • smarty怎么用
  • 限定性收入跟非限定性收入的区别
  • 旅行社差额征税税率是多少
  • vue关闭路由
  • PHP strcmp()和strcasecmp()的区别实例
  • 税费滞纳金计入增值税吗
  • 培训费用是什么成本
  • pandas inner join
  • PostgreSQL之分区表(partitioning)
  • mysql嵌套语句
  • 摄影行业开票
  • 小规模纳税人代销商品增值税如何计算
  • 合并报表中的抵损益
  • 实收资本不能动吗
  • sql 存储过程语句
  • 信用减值损失与资产减值损失
  • 短期借款的核算会计分录
  • 增值税纳税申报表附列资料(一)
  • 材料已入库后收回怎么办
  • 已认证发票红冲全流程操作
  • 预计负债 负债 区别
  • 什么是债券转让价格与发行价格
  • 收到实收资本会计摘要
  • 贷款利息天数怎么算的
  • docker部署zookeeper集群
  • windows7的使用期限
  • ubuntu搭建tftp服务器
  • mac怎么更换用户名和密码
  • win 超级终端
  • windows10 uac关闭
  • win8系统没有wifi
  • win10系统电脑开机密码在哪里设置
  • windows10稳定版本
  • linux sleep命令有什么用
  • cmd命令format
  • rom开发是做什么的
  • 税务稽查案件办案程序规定
  • 云办税大厅
  • 税务文书有哪些
  • 办图书馆怎么审批
  • 车辆购置税属于税金及附加吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设