位置: 编程技术 - 正文

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

  • 增值税专用发票可以开电子发票吗
  • 免抵退税退的是什么税
  • 工资中代扣款是什么
  • 通过法院拍卖取得的设备怎么开具发票
  • 医疗垃圾处理费标准2020
  • 以前年度计提的工资没发放怎么处理
  • 基本户注销后还可以再开吗
  • 电子发票读取不出怎么办
  • 实收资本未到位情况说明
  • 非营利组织可以开发票吗
  • 个人厂房租赁税率是多少
  • 债务重组双方如何进行会计处理
  • 空调折旧费用科目
  • 房产税按原值计算公式
  • 哪些合同不需要缴纳印花税的通知
  • 单位房屋出租转投资性房地产怎么转?
  • 外出拓展训练活动所花的费用怎么做分录?
  • 小规模季度不超过45万的税收优惠
  • 增值税留底税怎么计算
  • 工会经费税务局怎么收
  • 企业在什么情况下做薪酬诊断
  • 银行代发工资当月没发下个月发没事儿吧
  • 支付应付账款的会计科目
  • 制造费用在利润表体现吗
  • 公司成本和费用过高怎么办
  • 销售退回如何做账
  • 商品进价销售要上税吗
  • 局域网内如何设置静态ip
  • 抵扣给供货商预缴税款
  • 关于员工表彰奖励的方案
  • 未开票收入跨年度如何申报冲回
  • 判断技巧
  • 增值税出口退税为什么不属于政府补助
  • 设计版权费用
  • 企业办理银行结汇流程
  • 1.exe是什么文件
  • php $_files
  • thinkphp框架安装
  • 申请个人所得税
  • rep p
  • cvpr2020结果
  • web攻防之业务安全实战指南在线阅读
  • php读取大文件的内容
  • thinkphp6框架源码完整版下载
  • 出口货物视同内销征税的会计核算?
  • ps怎么用魔棒选区
  • 资产负债表净资产为负数
  • 现金劳务收入会计分录
  • sklearn实例
  • 租集体土地建厂合法吗
  • 工业企业辅助生产设备
  • 股权转让主要交什么税费
  • 企业所得税包含员工工资吗
  • 绩效是否需要交税
  • mysql 增加用户
  • 企业怎样合理避税详述
  • 销售费用期末余额
  • 销售费用现金支出预算
  • 老板怎么从公户拿钱
  • 代收代缴水电费协议
  • 银行利息增值税发票申请单怎么填
  • 数据库访问机制
  • JDBC探索之SQLException解析
  • win7旗舰版系统激活码
  • linux安装sz
  • ubuntu18.04配置
  • mac将多张图片保存到相册
  • 微软开始推送win10
  • win8.1删除所有内容并重新安装
  • win8怎么调整屏幕分辨率
  • jquery禁止点击事件
  • 缩放打印到一张a4纸上设置
  • nodejs中的事件循环的执行顺序
  • jquery操作table
  • node.js的理解
  • shell脚本 -ne 0
  • vr project
  • python文字检测
  • 税务局遴选能去什么单位
  • 如何查找迪士尼电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设