位置: 编程技术 - 正文

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

  • 增值税销项进项什么意思
  • 税后营业利润怎么算出来的
  • 合伙企业可以列入股东吗
  • 预提费用的附件怎么做
  • 财务要做哪些表
  • 长期待摊费用借贷方向表示什么
  • 展会补贴收入会计处理
  • 最新增值税申报表及附表下载
  • 资产负债表项目的编制方法
  • 增值税会计核算设置的会计科目有哪些
  • 开发成本可以计增值税吗
  • 付款然后付的手续费如何做账?
  • 企业购入旧固定资产如何计提折旧
  • 土地增值税缴纳标准
  • 金税四期什么时候正式上线
  • 离婚房屋权属变动怎么办
  • 外购软件可以加计扣除吗
  • 研发费用的检测费指的是什么内容
  • 暂估运费成本的账务处理
  • 金税盘怎么做账务处理
  • 公司房产税如何征收税率
  • 在Linux系统中安装了一块虚拟磁盘大小的2G
  • deepin如何
  • 应交税费年末账务处理
  • 单位开具发票
  • 股东能随便提走入账资金吗
  • 账簿启用及交接表样图
  • 辅导期一般纳税人可以抵扣进项吗
  • 支付本月物业费怎么做账
  • mongodb jpa
  • php网站结构
  • 无形资产处置计入哪里
  • 怎么解锁城堡上空
  • edge浏览器about:flags
  • 超限量发票申请下来后怎么操作
  • 加计抵减是适用什么税率
  • yii框架搜索分页modle写法
  • 真相 百科
  • yolov5 output
  • 期初成本和期末成本
  • discuzq开发
  • 公司的一项专利多少钱
  • 一般纳税人申请转为小规模纳税人
  • 长期应收款如何核算
  • 事业单位收到的罚款收入应纳入
  • 固定资金是什么科目
  • phpcms模板制作教程
  • 农机销售免税政策
  • MicrosoftSQLserver2014
  • php和mysql的联合使用解决了
  • 保证增信行通俗理解
  • 会计人员信息采集怎么填
  • PostgreSQL教程(七):函数和操作符详解(3)
  • 财务费用的科目类别是什么
  • 典当行借款合同需交印花税吗
  • 小微企业税收优惠政策从什么时候开始
  • 政府拨款怎么做账
  • 出口退税免抵退税额要交城建税吗
  • 管理费用和营业费用的比例
  • 社保的生育险按照什么比例报销
  • 房地产开发成本费用明细表
  • 分包抵扣金额
  • mysql存储过程判断输入判断类型
  • 电脑更新win10系统软件
  • vmware虚拟机怎么卸载不了
  • win8如何清空电脑里的所有东西
  • xp电脑状态栏跑到左边了怎么设置回来
  • win7系统的磁盘管理在哪里,怎么打开
  • macbook的qq怎么更换背景
  • 系统闹钟设置
  • android开发环境配置
  • Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
  • perl中sub
  • shell脚本获取进程pid
  • jquery 日期
  • js怎么输出文字
  • 歺包做法
  • javascript的代码写在哪里
  • ca钥匙登陆不了电子税务局
  • 一月份纳税申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设