位置: 编程技术 - 正文

详解JavaScript基于面向对象之创建对象(1)(js基础)

编辑:rootadmin

推荐整理分享详解JavaScript基于面向对象之创建对象(1)(js基础),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js基础,js基础,javascript基础,js基础,javascript基础,javascript基于,javascript的基础类型,javascript基于,内容如对您有帮助,希望把文章链接给更多的朋友!

这一次我们深入的学习一下JavaScript面向对象技术,在学习之前,必要的说明一下一些面向对象的一些术语。这也是所有面对对象语言所拥有的共同点。有这样几个面向对象术语:一、对象 ECMA-把对象(object)定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。尽管ECMAScript如此定义对象,但它更通用的定义是基于代码的名词(人、地点或事物)的表示。二、类 每个对象都由类定义,可以把类看做对象的配方。类不仅要定义对象的接口(interface)(开发者访问的属性和方法),还要定义对象的内部工作(使属性和方法发挥作用的代码)。编译器和解释程序都根据类的说明构建对象。三、实例 程序使用类创建对象时,生成的对象叫作类的实例(instance)。对类生成的对象的个数的唯一限制来自于运行代码的机器的物理内存。每个实例的行为相同,但实例处理一组独立的数据。由类创建对象实例的过程叫做实例化(instantiation)。 在前面的章节我们提到过,ECMAScript并没有正式的类。相反,ECMA-把对象定义描述为对象的配方。这是 ECMAScript逻辑上的一种折中方案,因为对象定义实际上是对象自身。即使类并不真正存在,我们也把对象定义叫做类,因为大多数开发者对此术语更熟悉,而且从功能上说,两者是等价的。 使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的对象。ECMAScript 拥有很多创建对象的方法。1、原始方式 因为对象的属性可以在对象创建后动态定义,所有许多开发者都在JavaScript 最初引入时编写类似下面的代码:

详解JavaScript基于面向对象之创建对象(1)(js基础)

在上面的代码中,创建对象Car。然后给它设置几个属性:它的颜色是蓝色,有四个门,每加仑油可以跑 英里。最后一个属性实际上是指向函数的指针,意味着该属性是个方法。执行这段代码后,就可以使用对象Car。不过这里有一个问题,就是可能需要创建多个Car的实例,这样就造成了我们会重复许多类似的代码,这样会很麻烦。2、工厂方式 要解上述的多个类似对象声明的问题,开发者创造了能创建并返回特定类型的对象的工厂方式。这种方式就是为了解决实例化对象产生大量重复的问题。(1)无参数的工厂方式 例如,函数createCar()可用于封装前面列出的创建Car对象的操作:

在这里,第一个例子中的所有代码都包含在createCar()函数中。此外,还有一行额外的代码,返回TempCar 对象作为函数值。调用此函数,将创建新对象,并赋予它所有必要的属性,复制出一个我们在前面说明过的Car对象。因此,通过这种方法,我们可以很容易地创建Car对象的两个版本(Car1和 Car2),它们的属性完全一样。(2)有参数的工厂方式 我们还可以修改createCar()函数,给它传递各个属性的默认值,而不是简单地赋予属性默认值:

给createCar()函数加上参数,即可为要创建的Car对象的color、doors 和mpg属性赋值。这使两个对象具有相同的属性,却有不同的属性值。 工厂方式解决了重复实例化的问题,但是还是有一个问题,那就是前面的例子中,每次调用函数createCar(),都要创建新函数showColor(),意味着每个对象都有自己的 showColor() 版本。而事实上,每个对象都共享同一个函数。有些开发者在工厂函数外定义对象的方法,然后通过属性指向该方法,从而避免这个问题:

在上面这段重写的代码中,在函数 createCar()之前定义了函数 showColor()。在createCar()内部,赋予对象一个指向已经存在的 showColor() 函数的指针。从功能上讲,这样解决了重复创建函数对象的问题;但是从语义上讲,该函数不太像是对象的方法。所有这些问题都引发了开发者定义的构造函数的出现。3、构造函数方式 创建构造函数就像创建工厂方式的函数一样容易。第一步选择构造函数的名字。根据惯例,这个名字的首字母大写,以使它与首字母通常是小写的变量名分开。除了这点不同,构造函数看起来很像工厂方式的函数。请看下面的例子:

下面为您解释上面的代码与工厂方式的差别。首先在构造函数内没有创建对象,而是使用this关键字。使用new运算符构造函数时,在执行第一行代码前先创建一个对象,只有用this才能访问该对象。然后可以直接赋予this属性,默认情况下是构造函数的返回值(不必明确使用 return 运算符)。现在,用new运算符和对象名Car创建对象,就更像 ECMAScript 中一般对象的创建方式了。 就像工厂方式的函数,构造函数会重复生成函数,为每个对象都创建独立的函数版本。不过,与工厂方式的函数相似,也可以用外部函数重写构造函数,同样地,这么做语义上无任何意义。这正是下面要讲的原型方式的优势所在。在下篇文章中会详细的分析面向对象的原型方式以及其他综合的方式。

标签: js基础

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

上一篇:JavaScript动态创建form表单并提交的实现方法(如何用js动态创建div)

下一篇:JS提交form表单实例分析(js怎么拿到表单提交数据)

  • 本期应补退税额和期末未缴税额
  • 营业账簿印花税怎么交
  • 集体不动产和动产包括
  • 增值税本期应补退税额为负数怎么处理
  • 收购别人的公司要具备什么条件
  • 增值税专用发票抵扣税额是什么意思
  • 公司股份无偿转让怎么办理流程
  • 购买材料产生的运杂费怎么做分录
  • 从国外购进样品要交税吗
  • 高新研发费的账务处理怎么做?
  • 不需要缴纳企业所得税的企业类型
  • 增值税农产品扣除率
  • 企业取得的信托计划分红缴企业所得税吗
  • 海关完税凭证抵扣税率
  • 内蒙古地税电子税务局app
  • 装修增值税普通发票几个点
  • 个人租车给公司租金多少合适
  • 增值税的税负率的计算公式
  • 发票上电话可以写手机号吗
  • 常用的索赔费用计算方法
  • 国家减免税额怎么入账
  • 企业应纳税所得额计算公式
  • linux minor
  • Windows 11 CO-21H2 22000.194 正式版官方下载地址(附esd微软三语直链下载x64+arm64)
  • 多交的增值税可以做营业外支出吗?
  • 收境外汇款时怎么操作
  • 预付采购材料货款
  • 建筑业挂靠经营行为有什么涉税风险?
  • 总分机构分摊比例如何确定
  • 转让居民企业的股权所得交企业所得税吗
  • 职工福利费入账依据
  • 门店装修费怎么记会计凭证
  • php文件操作小结怎么写
  • 餐饮业开具增值税专用发票
  • 训练集验证集和测试集
  • 详解php归并排序数据
  • discuz去除底部
  • 香港企业的所得税怎么算
  • 企业有外币账户怎样做账
  • 小规模如何申报增值税
  • wordpress怎么安装插件
  • bootstrapstandby
  • 按工资申报的工龄怎么算
  • 小规模纳税人劳务费税率
  • 一般纳税人认定管理办法
  • 售后服务费计提政策
  • 个人所得税汇算清缴
  • 合伙开网吧需要什么手续
  • 15个postgresql数据库实用命令分享
  • 哪些公司可以开电费发票
  • 只有收据没有发票怎么入账
  • 未分配利润可以弥补亏损吗
  • 开发成本期末有余额吗
  • 公司缴纳社保会计分录怎么做
  • 增值税及附加税计算公式
  • 个体工商户不经营需要税务登记吗
  • 主营业务成本里的工资
  • 外出经营预交企业所得税税率
  • 企业所得税留抵税额
  • 农产品加计扣除怎么计算
  • 公司向个人借款合法吗
  • 期间损益科目如何结转
  • 工程施工中购买的设备一直未入账需要评估吗
  • 存货期末报表列示
  • 仓库周转率是什么意思
  • win7系统远程
  • u盘pe系统安装步骤
  • VMware虚拟机中不支持虚拟化
  • ubuntu怎么用linux
  • adobe windows7
  • linux 操作指令
  • cocos2d-x 3.2 在window平台vs2012下解决中文乱码问题
  • perl -i -pe
  • js组件是什么
  • dos命令怎么输入命令
  • 插入排序_Python与PHP的实现版(推荐)
  • java获取两个日期间的所有月份
  • android圆形按钮
  • jquery中遍历指定的对象和数组是哪个方法
  • JavaScript bold方法入门实例(把指定文字显示为粗体)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设