位置: 编程技术 - 正文

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

  • 企业纳税过程
  • 出借包装物收到押金
  • 出货一般要多久
  • 个体户开电子发票需要交税吗
  • 受托加工的物资是哪个科目
  • 金蝶k3费用发票怎么做
  • 销售费用和管理费用和财务费用
  • 累计折旧可以直接计入主营业务成本吗
  • 子公司分红母公司要不要交税
  • 银行提备用金怎么提
  • 成本会计实训要求
  • 临时售楼处及其装修费用如何列支
  • 支票报销是怎么操作的
  • 建筑施工企业销售费用包括哪些
  • 铲车费属于劳务费吗
  • 什么叫含税级距和不含税级距
  • 陕西省水利基金的税率
  • 公司为员工承担的个税可以税前扣除吗
  • 卷烟消费税税率表
  • 外贸企业进项税额
  • 公司账户收到车险怎么做账
  • 国税地税纳税申报
  • 报销客户车费会计分录怎么写?
  • 现金股利属于什么所得
  • linux路由器配置实例
  • 误餐费怎么入账
  • dgservice.exe是什么文件
  • cpu哪个型号性价比最高
  • 购买股票的会计分录
  • 土增税清算扣除项目分摊公式
  • 季节性用工政策
  • 源码阅读技巧
  • 汇兑差额如何计算
  • 营改增抵减的销项税发票要抵扣吗
  • 旅行社差额征税税率是多少
  • window cuda
  • php中的强制类型转换函数有哪些?
  • 担保贷款借款人征信不好有影响吗
  • 金银首饰包装物消费税
  • 新注册企业实收资本没到账怎么处理
  • 小规模纳税人应交税费会计分录
  • 利润表期初余额怎么填
  • php中定义常量的函数是什么
  • 织梦设置会员访问
  • PostgreSQL之分区表(partitioning)
  • mongodb副本集群
  • 工程合同主要看什么
  • 资产减值损失属于什么科目
  • sqlyog与mysql
  • 可供出售金融资产新准则叫什么
  • 项目差旅费可以直接入成本吗
  • 增值是什么意思解释
  • 管理费用是怎么计算的
  • 什么是现金什么是现金流
  • 高校报销开普票还是专票
  • 职工基本医疗保险怎么用
  • 预付一年的房租怎么做账
  • 餐饮业固定资产怎么摊销
  • 物流公司保险怎么买
  • 销售废旧物资如何入账
  • mysql登录失败处理
  • Mac无法连接到iCloud
  • u盘装系统软件哪个好
  • xp硬盘安装win7系统教程
  • iis搭建php环境
  • linux apache怎么启动
  • javascript零基础
  • Javascript之String对象详解
  • ExtJS4利根据登录后不同的角色分配不同的树形菜单
  • 学习计划
  • python网络爬虫程序
  • python函数例子
  • 浅析我国国防现状
  • os模块 python
  • jquery 异步提交表单
  • python中循环
  • 使用SQLite数据库保存和处理数据
  • 河南商丘医疗保险在微信上怎么交
  • 新都税务局咨询电话号码
  • 上海市网上税务局如何登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设