位置: 编程技术 - 正文

javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)(js中的类是什么)

编辑:rootadmin

关于javascript中类的继承可以参考阮一峰的Blog《Javascript继承机制的设计思想》,说的很透。

一、在javascript中实例化遇到的问题:

下面用《javascript高级程序设计》中的例子来做说明,假如现在定义了一个car的对象,它是Object类的实例。像下面这样的: 现在又需要这样的一个实例,你可能会像这样来定义: 这样遇到的问题是每个对象都需要重新定义一次他的字段和方法。很麻烦。 二、类的定义--工厂方式实现: 对上面的例子进行一个包装,利用函数的返回值来做文章: 调用方式: var oCar1 = createCar(); var oCar2 = createCar(); 这种方式被称之为工厂方式。工厂方式看起来是省事多了。起码创建一个对象的时候不再需要那么多的行数。因为每个属性(color,doors,mpg)的值都是固定的,还需要再次进行改造,利用参数传递来实现: 这样做看似的确可以实现了对象了。实现也很简单,调用也很方便。但是有两个不是很好的地方: 1、从语义上看,在创建对象时没有使用new运算符,似乎不是那么正规(通常创建一个对象都用一个new运算符来实现)。 2、不符合面向对象的特征--封装。在这个例子中,oCar1和oCar2都有自己的showColor方法,并且他们的showColor都是自己的实现。但是事实是他们共享的是同一个函数。 也是有办法解决这个共享函数的问题,利用函数指针来解决。在createCar函数之外再创建一个showColor函数,而oTempCar的showColor方法指向这个showColor函数: 虽然这样解决了重复创建函数的问题,但这样的话,就使showColor函数看起来不像是对象的方法。 三、类的定义--构造函数方式实现: 在Car类中,this指针代表了Car的一个实例,因此不需要返回值。虽然构造函数方式实现了类的定义,但是和工厂方式一样,他也是为每个实例创建一个单独的方法。虽然可以像工厂函数一样在函数之外再创建一个函数利用指针来解决这个问题,但是这么做的话,在语义上没有意义。 四、类的定义--原型方式实现: 利用对象的prototype属性,把它看成是创建新对象所依赖的原型。用空构造函数来设置类名。然后所有的属性和方法都被直接赋予prototype属性。 1、构造函数没有参数。使用原型时,不能通过给函数参数传递参数来初始化属性值。 2、在有多个实例时,对其中一个实例的属性的更改会影响到另外一个实例的属性。 测试代码: 当然了,也会有办法解决这个问题的。那就是混合的构造函数/原型方式 五、类的实现--混合的构造函数/原型方式实现 这种实现方式是将每个类的实例中共享的属性或者方法妨到原型链中实现,而将不需要共享实现的属性和方法放在构造函数中实现。这中类的实现方式是使用最广泛的方式。 这种方式和混合的构造函数/原型方式相比,提供了一种友好的编程风格(在混合的构造函数/原型方式中,showColor方法的定义是在方法体外实现的,而不是在构造函数的方法体内完成的)。这种类的定义方式使用也很多。 七、类的定义--混合工厂方式实现 这种方式和工厂方式看起来差不多。由于在Car()构造函数内部调用了new运算符,所以将忽略掉位于构造函数之外的new运算符。在构造函数内部创建的对象被传回变量var。虽然看起来有了new运算符了,比工厂方式有了一些进步,但是这种实现方式也是会出现重复创建方法的问题。因此也不推荐使用这种方式来定义类。

推荐整理分享javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)(js中的类是什么),希望有所帮助,仅作参考,欢迎阅读内容。

javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)(js中的类是什么)

文章相关热门搜索词:js类class的作用,javascript class类,js类class的作用,javascript 类,js中的类是什么,js中的类和对象,javascript 类,javascript中类的继承,内容如对您有帮助,希望把文章链接给更多的朋友!

JS继承 笔记 JS继承JavaScript中没有类的概念,与类相关的继承的概念更是无从谈起,但是我们可以通过特殊的语法来模拟面向对象语言中的继承。在JS中模拟继承有

Javascript 面向对象编程(一) 封装 学习Javascript,最难的地方是什么?我觉得,Object(对象)最难。因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握。下面就是我

Javascript面向对象编程(二) 构造函数的继承 今天要介绍的是,如何生成一个"继承"多个对象的实例。比如,现在有一个"动物"对象的构造函数,functionAnimal(){this.species="动物";}还有一个"猫"对象的构

标签: js中的类是什么

本文链接地址:https://www.jiuchutong.com/biancheng/385752.html 转载请保留说明!

上一篇:javascript复制对象使用说明(js复制div)

下一篇:JS继承 笔记(js继承的概念)

  • 弥补亏损用税前还是税前
  • 二手商铺买卖税率大约百分比
  • 一般纳税人进项销项抵扣如何做账
  • 个体户银行开户是开公户还是私户
  • 企业所得税成本调减怎么填
  • 购买车辆交纳的费用
  • 发票没交税可以退税吗
  • 建筑企业小规模纳税人升为一般纳税人条件
  • 报销必须是公司吗
  • 税务局开专票作废重开及退税流程
  • 商业汇票的存款期限
  • 销售承兑现金会退回来吗
  • 违约金收入需要缴纳印花税吗
  • 企业支付给职工的工资和职工福利应当计入
  • 受托加工物资产包括哪些
  • 生产部门的费用计入什么科目
  • 免抵退办法出口销售额和免税销售额的区别
  • 个体工商户年末计提的工资,次年怎么算
  • 营改增后房屋维修的发票可以抵扣吗?
  • 小微企业免税销售额填含税还是不含税
  • 通讯费税前扣除填报怎么填
  • 国家要收回房屋土地怎么补偿
  • 处置固定资产按残值还是净值
  • 开个人发票需要身份证号码吗
  • 购入生产使用的材料会计分录
  • 企业做账会计需要什么资质
  • 合并报表利润表是当期还是累计
  • 转出以前年度成本怎么做账
  • 购买方现金折扣计入什么科目
  • 一般纳税人接受固定资产投资时相关的科目可能有
  • 汽车维修的发票的购买方
  • 出租设备的租金计入哪个科目
  • PHP:pg_num_fields()的用法_PostgreSQL函数
  • 持有至到期投资在资产负债表怎么填
  • 销售费用税前扣除吗
  • 损失赔偿金要开什么发票
  • 摩洛哥首都拉巴特简介
  • 福利企业的税收怎么算
  • PHP:gmstrftime()的用法_Date Time函数
  • 在途物资什么类科目
  • 会计购入材料入什么科目
  • 为什么很多银行卡会被异地警方冻结
  • 云质信息
  • spring5和6差别大吗
  • 企业进项税怎么查询
  • 外购商品用于赠送增值税可以抵扣么
  • 本年利润的会计分录有哪些
  • 第四季度报表和年报对不上
  • 成本和费用有着根本的区别
  • 拓展费用入什么科目
  • 公司固定资产抵押贷款无法偿还
  • 公司买卖股票亏损了 要交企业所得税吗
  • 查补以前年度税款
  • 一般纳税人税种核定表
  • 预付账款货物到了之后怎么入账
  • 刻章需要准备的资料
  • 发票冲红如何做账红字发票需要给购买方吗
  • 收到国库退款
  • 个税多缴了纳税人怎么办
  • 一般纳税人应交增值税怎么算
  • 销项负数发票是红字发票吗
  • 手写账目表格怎么做
  • 未开票收入下月开票会计分录
  • 制造费用和管理费用怎么结转
  • 赠品不开票怎么办
  • 可抵扣的税票
  • 未分配利润太大了怎么处理
  • ubuntu配置yum
  • winxp怎么自动开机
  • WIN10系统中没有接入音频设备 要启动gui
  • centos7.2安装
  • 如何查看激活日期苹果
  • jquery 延迟执行方法
  • jquery 插件写法
  • 数据库的基本操作实验报告
  • Unity3d IOS 64 IL2CPP迁移之 AStarPath JosnFX 错误
  • python中set用法
  • 北京朝阳地税大厅电话
  • 北京市国家税务局网站官网
  • 重庆国税税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设