位置: 编程技术 - 正文

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

  • 费用的进项税额可以抵扣吗
  • 小规模纳税人起征点和免征额
  • 拍卖行业收取手续费标准
  • 残疾人就业保障金会计分录怎么做
  • 已启动申报比对异常申报,可以作废嘛清卡吗
  • 工程项目临时用工人员工工资怎么办
  • 所有者权益变动表是什么报表
  • 企业之间的借款利息计入什么科目
  • 会计准则哪些科目变化最大
  • 所得税汇算清缴时间期限
  • 少数股东权益如何保障
  • 应入固定资产的已做费用,如何调账
  • 安装工程什么时候计提成本费用
  • 代驾服务可以开具增值税专用发票吗
  • 现金折扣税前扣除
  • 能否异地进行税款支付?
  • 餐饮发票一千多钱税
  • 房产税应当计入什么科目
  • 购买的装修样品怎么入账
  • 企业的筹资费用哪里找
  • 公司出租商铺要交哪些税
  • 公司筹建期间借款怎么办
  • 利息收入 开票
  • 筹资费用的含义
  • 私募证券投资如何交易
  • 给供应商垫付运费合法吗
  • vue 高德地图 窗体
  • 收入成本科目
  • staruml教程
  • 企业弥补亏损明细表
  • 踩坑视频
  • php数组去重函数
  • 进项税额准予抵扣的有哪些
  • vue知识点总结
  • 餐饮管理公司开发票
  • php学生管理系统设计报告
  • 100多年前程序员
  • 对方代垫包装费怎么做分录
  • php无法上传文件
  • 资产负债表日后至财务报告批准报出日之间
  • 购买材料发票未到如何做账?
  • 解决PostgreSQL服务启动后占用100% CPU卡死的问题
  • 固定资产丢失进哪个科目
  • 交纳增值税的账务处理PPT
  • 暂估商品入库 后收到发票怎么做分录
  • 低值易耗品属于资产类账户吗
  • 公司注销后应收账款转给个人
  • 出口退税退的是哪些税
  • 收不回来的应收账款
  • 期末调汇汇兑损益科目
  • 债券发行后在市场上交易时是怎么确定交易价格的
  • 交易性金融资产属于流动资产
  • 餐饮店原材料表格
  • 管理费用结转有余额吗
  • 企业净资产怎么填
  • 总分类账建账顺序
  • 清除sql表内容
  • sql server 复制数据库具体操作图解
  • mysql 5.7.34安装
  • Windows 8.1下MySQL5.7 忘记root 密码的解决方法
  • 32位操作系统不能玩cf
  • auepuc.exe是什么软件
  • ubuntu 怎么用
  • linux系统中的一切都归结为
  • ubuntu 18.04怎么用
  • win7系统打印服务怎么开启
  • win7右键设置方法
  • extjs grid设置某列背景颜色和字体颜色的实现方法
  • excel的基本数据类型
  • unity开发用什么电脑比较好
  • shell中执行mysql命令
  • 仿百度首页html代码静态
  • windows node.js
  • js设置密码长度
  • python二叉树
  • javascript产生随机整数随机性强
  • python redis incr
  • dom,ran
  • 铅球七米
  • 郑州高新税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设