位置: 编程技术 - 正文

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

  • 哪些东西要征收消费税
  • 待认证进项税账务处理
  • 印花税计入税金及附加吗
  • 本期缴纳上期应缴税额
  • 营改增后企业所得税怎么算
  • 公允价值变动计入其他综合收益
  • 个税生产经营申报流程
  • 出口退回的增值税计入哪个会计科目
  • 跨年销售收入退回增值税处理
  • 个体工商户怎么分配股份
  • 零余额账户银行余额调节表
  • 年终奖第二年才发怎么计算个税在个税app
  • 电子钥匙续费能退款吗
  • 健身行业的税务政策
  • 增值税记账流程
  • 筹建期可以有收入吗
  • 成本/利润
  • 科研费收入如何入账?
  • win7电脑加入域
  • Win10专业版家庭版企业版
  • 企业存款利息收入要交哪些税
  • 公司注销帐上的钱取出来要交税吗
  • 王者荣耀如何进入3D视角
  • win11有什么升级
  • linux网卡lo
  • php怎么读取txt
  • 高新技术企业股权转让
  • arc架构
  • 销售产品是销项税额还是进项税额
  • thinkphp 模块
  • 文本超出单元格
  • 发票过期未认证可以用吗
  • 建筑企业总包单位有哪些
  • 小规模纳税人养老保险怎么交
  • 先计提所得税还是先结转成本
  • mysql内连接查询使用汉语作为官方语言的所有国家
  • 增值税进项税额在借方还是贷方
  • 小企业如何计提折旧
  • 积分兑换合适吗
  • 公司股东的权利和义务有哪些
  • 固定资产折旧加计扣除最新政策
  • 计提的坏账准备计入什么科目
  • sql死锁的简单例子
  • 专项资金的账务处理 借:银行存款 贷:其他应付款
  • 事业单位零余额账户使用流程
  • 单位垫付职工个税如何记账
  • 个税速算扣除数2023
  • 刻章费用怎么说
  • 多交的税款不退可以吗
  • 认缴的实收资本需要做账吗?
  • 股东出资转为借款
  • 企业重组合并
  • 公司没有收入怎么办
  • 买二手办公用品
  • 购买股票如何操作
  • 无形资产摊销怎么计算月摊销额
  • 库存商品销售后怎么做账
  • 开票软件信息备份怎么备份
  • 阿拉伯数字转大写函数
  • windows内存诊断是干什么的
  • freebsd ntfs
  • windows小娜怎么开启
  • 在linux系统中创建用户账户
  • win7此电脑在哪里
  • windows8音频服务尚未启用 怎么解决
  • opengl 顶点
  • opengl sharder
  • javascript概述及作用
  • cssdeck
  • 及将上市的手机
  • 用python编写
  • javascript命名空间
  • 深入理解javascript特性
  • python中循环
  • javascript的核心语言对象包括
  • 深入理解计算机系统 电子书
  • 湖南省税务局网站2024公务员招聘
  • 浙江增值税发票勾选认证流程
  • 进口车区别
  • 全款房契税退税需要什么资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设