位置: 编程技术 - 正文

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

  • 小规模纳税人开专票税率是1%还是3%
  • 不征收增值税的有哪些
  • 金税盘软件
  • 资源税征收原则
  • 新入股的钱入什么科目
  • 注册公司工贸和商贸区别
  • 财务金额表格
  • 工程行业存货哪些科目组成
  • 分公司非独立核算是什么意思
  • 个体工商户能否转让
  • 员工个人无息借款违法吗
  • 小规模纳税人购置税控设备
  • 支付一年房租计入什么科目
  • 商品周转天数和周转率
  • 代扣代缴手续费返还需要缴纳增值税吗
  • 企业给员工购买社保的规定
  • 年底结转损益是什么意思
  • 废品残料回收入库
  • 分公司发生修理费能否在总公司列支?
  • 学校维修维护费包括哪些
  • 递延所得税资产是什么
  • 增值税总分机构可以汇总纳税吗
  • 专票小数点后两位没有显示出来可以认证吗
  • 收到转账支票怎么填写凭证
  • 转让费入什么会计分录
  • 公司流水账是会计做吗
  • 收到服务费发票可以计入什么科目
  • macos使用方法
  • 盈利 利润
  • 已提折旧固定资产评估增值的会计处理是企业会计准则
  • 消费税和增值税的征税范围有何不同
  • 长期待摊费用如何结转
  • macOS Big Sur 11.3 公开测试版正式推送(附更新内容)
  • php单独运行
  • 如何用php制作网页
  • php中实现文件上传需要用到哪几个函数
  • 应收账款余额在借方表示谁欠谁
  • 工地扬尘检测仪防尘缸怎么安装
  • 物流公司交保险是骗局吗
  • 预缴增值税借方余额
  • 长期股权投资权益法转成本法
  • 产品补发原来的要退吗
  • python 平均函数
  • 纳税调整项目明细表30行怎么填写
  • 从公账发工资是什么凭证
  • python统计出现次数并排序
  • 汇算清缴需要做账吗
  • 负债类账户期末余额在借方还是贷方
  • 职工报销的医药费是什么
  • 电话布线使用网络
  • 自产产品用于业务招待
  • 转增资本需要交税吗
  • 顶账资产入账依据
  • 现金比率合适范围
  • 备用金账目处理
  • 小规模收的专票以后能抵扣吗
  • 财政返还什么意思
  • 会计账簿有哪些格式
  • 交易性金融资产公允价值变动计入
  • 将SP2整合进Office 2007的安装包中的方法
  • 六款常见的墨水
  • 看视频出现弹幕怎么处理
  • 系统设置技巧有哪些
  • Linux系统用命令进行盘数据往外读不可
  • 怎么从win8装回win7
  • 微软发布更新的时间每月
  • bootstrap页面代码
  • appiumforwindows的简单安装和启动(安卓)
  • javascript教程完整版
  • json详细教程
  • php和js的区别和联系
  • shell脚本switch
  • js弹出小窗口
  • android开发之apritag
  • jquery判断值是否为空
  • unity 120帧
  • js中的substring
  • android+
  • 如何开发一个新的向量库
  • js文本框只能输入字母
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设