位置: 编程技术 - 正文

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

  • 交易性金融资产是什么意思
  • 白酒消费税最低计税价格
  • 公司自有房产自用要交房产税吗
  • 政府无偿划拨土地涉及的税费
  • 证券公司清算交收
  • 已付款已收货但发票未到账务处理怎么做
  • 我们应该怎么做才能成功
  • 购进原材料发生非正常损失,账面成本10万元 该原材料
  • 老板投入资金入什么科目
  • 计提结转本月城建税怎么做账?
  • 字节跳动属于什么类型的企业
  • 进口材料支付的关税
  • 报企业所得税的利润总额怎么填
  • 营改增后还有营业费用吗
  • 专票红冲如何做账
  • 上报汇总是什么时候
  • 个人购买房屋的税
  • 办税人员的职责和义务
  • 房地产收费依据与标准
  • 出售固定资产账务如何处理
  • 购进免税农产品怎么计算进项税额
  • 公司章程出资时间怎么填写
  • 两免三减半适用范围
  • 部队医院学校都没有税号吗
  • 经济成本和会计成本的大小
  • 冲减多计提税费
  • 工业园租金大概是多少
  • 美元汇户和钞户的区别
  • php 注册
  • 办公家具折旧年限及计算方法
  • 直接人工的核算包括
  • php file_append
  • 特殊性税务处理弥补亏损限额
  • 缴纳个税时怎么做分录
  • 增值税抵扣新政策
  • uni-app介绍
  • jquery版本
  • js返回上一步操作
  • HTML+CSS+JS+Jquery+练手项目+...合集(前端学习必备,持续更新中...)
  • php的array
  • 利润表的本月数怎么算
  • vue style import
  • sql server查询前1000条纪录
  • 跨月红字发票开错了可以撤销吗
  • 未开票收入是怎么算的
  • 如何把excel数据导入到word表格
  • 赠送代金券活动方案
  • 固定资产出售如何开票
  • 转出上年的进项税怎么算
  • 暂估入库发票差异调整
  • 应收账款周转率越大越好还是越小越好
  • 还银行贷款如何计算利息
  • 查定征收在哪一章
  • 厂房装修费用账务处理
  • 本月应负担的修理费
  • 股东不能参与公司运营和决策,可以起诉吗
  • 租赁写字楼的需求有哪些
  • win7隐藏共享文件夹
  • xp无法识别的usb设备 怎么解决
  • mac系统怎么新建txt
  • 怎么更改win7
  • win10升级电脑
  • windows屏幕上有多个窗口时
  • Win10 Mobile 10586无法更新应用怎么办 一招教你解决
  • cocos2dx官方教程
  • jasonToObject
  • bootstrap怎么用
  • quick-lua touch 触摸事件
  • cocos2dx怎么用
  • css filter blur
  • 批处理删除重复值
  • webuploader.create
  • androids翻译
  • Unity64 AStarPath 寻路失效 Bug解决 IOS64 IL2CPP - Bad date/time format in the zip file
  • jquery map遍历
  • 常用的javascript对象
  • python面向
  • 深圳前海自贸区医院是三甲吗
  • 济南槐荫税务局办税大厅电话
  • 残疾人创业有税收什么优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设