位置: 编程技术 - 正文

JavaScript高级程序设计(第3版)学习笔记6 初识js对象(javascript高级程序设计pdf百度云)

编辑:rootadmin
在房子里面可以放你想放的任意事物——如果你有足够的美学造诣,你甚至可以弄一个房中房试试——当然,为了方便管理,我们会给房子里存放的所有事物都会取上一个不重复的名字,比如医药房间里的各种药品名称。在ECMAScript中,你可以在对象中存放任意你想放的数据,同样,我们需要给存放的数据取一个名字——也就是对象的属性名,再存放各种数据。再看看ECMA-中对象的定义:无序属性的集合,其属性可以包含简单数据类型值、对象或者函数。   进入对象,我开始有些激动了,说实话,让我想起做这系列学习笔记的最初原因,就是因为该书对对象的深刻论述,让我对JavaScript的认知从客户端验证小工具转变成一门强大的面向对象脚本语言,但我现在也有点犯难了,因为关于对象,有太多太多的东西需要去细化,一时也不知该从哪个点切入,比如要想深入理解对象,作用域、执行环境、闭包这些概念是肯定离不开的,但如果连对象的概念都没说就开始执行环境和闭包,又感觉像是空中楼阁。不过又一想,也就释然了,这毕竟只是自己的个人学习笔记,又不是什么教科书,我大可以使用自己喜欢的方式来做自己的笔记(事实上,在前面的篇章中,我就有意识的重复那些我认为有意思的地方,这就是我喜欢的一种方式),当然,我还是会尽量以一种易于理解的方式来做这些笔记。 对象类型   和5种简单数据类型(Undefined、Null、Boolean、Number、String)相对应,对象(Object)也是一种数据类型,只是这种数据类型比较特别,它不但可以像简单数据类型一样存取通常的数据,而且可以将动作行为作为一种特殊的数据加以存取。 1、对象实例   每种数据类型都有相应的值,比如Undefined类型只有一个值undefined,而数字5是Number类型的一个值。对于对象类型,我们把值称为对象实例,那么对象类型都可以有哪些(值)实例呢?任意一个对象都是对象类型的值(实例),比如简单类型包装对象(Boolean、Number、String)就是对象类型的值(实例)。 2、对象字面量   既然任意一个对象都是对象类型的实例,那么对象实例怎么表示呢?或者说我们在交流过程中怎么书写出对象实例呢?简单数据类型的值很好表示,比如用符号“5”表示数字5,符号“true”表示Boolean值true,这些被称为字面量,那么,有没有对象字面量呢?答案是肯定的,对象字面量就是通过一对大括号({})来表示的。比如: 这里最外层的一对大括号({})就表示这是一个对象字面量。另外,还有数组字面量的概念,在ECMAScript中,数组Array是一个继承了Object的对象实例,通过这个对象实例可以创建数组类型的实例,数组类型的实例也可以直接通过数组字面量来表示,方法如下: 这里一对中括号([])用于表示数组,这是一个包含了两个对象的数组。通过对象字面量和数组字面量,形成了难以想象的强大表现力,事实上,流行的JSON数据格式就是基于此。 3、创建对象实例   熟悉一般面向对象的朋友都知道,要创建一个类的实例,首先要定义这个类,然后用new关键字来创建这个类的实例(别和我说还可以使用反射,我的Java可学的不好……)。但是在ECMAScript中,根本没有类的概念,那么,对象实例要怎么创建呢?   在ECMAScript中尽管没有类,但是也有某种程度上类似的概念,承担这个角色的就是函数,可以通过new操作符和函数来创建对象实例——每一个对象实例都有一个用于创建这个实例的函数。最基本的函数就是Object(),它是用来创建最一般对象的函数,其它的诸如Number()函数,可以用来创建Number对象的实例,Boolean()函数,可以用来创建Boolean对象的实例: (1)可以看到,要创建一个对象实例,首先需要有一个函数(称为构造函数),这个函数使用new调用时就是创建对象实例,不使用new时只是通常意义上的函数调用(如果这个函数在内部返回实例了,函数调用也可以创建对象)。 (2)所谓的内置对象实际上也就是内置了一些创建对象实例的函数而已,不同的函数创建不同的内置对象。 (3)关于要不要使用new操作符,我的建议是使用,如果不使用new操作符,有些情况下结果会出乎你的意料之外,像上例中的第5、7行,实际上并没有创建对象,而只是普通的函数调用,这个调用的作用就是转换数据类型。 (4)使用new创建对象实例时,如果调用构造函数不需要传入参数,也可以省略后面的函数调用操作符(()),当然,这种特性也不是什么值得宣扬的事情。 (5)如果需要创建自定义对象的实例,那么首先也需要定义一个构造函数,然后使用new操作符调用创建实例。这里需要注意,如果忘了new的话,可能会污染全局环境: 要避免这种问题,可以修改一下构造函数: 这个构造函数首先判断this值是否为Person类型,如果不是,就在内部使用new调用,以确保返回的值一定是Person类型实例。这种方式使得重构构造函数成为了可能,也许Boolean()、Number()、String()在实现上就是使用了这种方式来区分是构造函数还是转换函数。如果你在调用Object()时省略new的话,结果也能返回对象,估计也是在后台做了类似处理,同样的情况还有本文后部分要讲的函数类型构造函数Function()。 (5)可能有人会问,既然有对象字面量,何必要用这么复杂的方式来创建对象实例呢,直接写对象字面量不就完了?用对象字面量创建对象实例,根本没有使用什么函数,看来,上面的“每一个对象实例都有一个用于创建这个实例的函数”的说法并不正确。   首先第一个问题,的确,可以使用对象字面量来创建函数,而且也非常简洁,这甚至也是我首先推荐的一种创建方式,但是用这种方式创建对象实例,只能创建单例的实例,对于需要创建多个相同类型的对象实例来说并不适用,然后第二个问题,用对象字面量创建对象,实际上并不是没有相应的构造函数,只是构造函数为Object(),使用对象字面量,后台可能不会去调用new Object(),但创建出的对象仍然有指向这个函数的属性,这可以从下面代码输出中得到验证: 这里的constructor是每个实例对象都有的一个属性,用于保存创建这个对象实例的函数,这就是下面要讲的。 4、对象属性和方法   每一种数据类型都有各自的共性,比如Number类型值都有可以和另外一个Number类型值相加的特性,同样,对象类型的实例也有一些相同的特性,这些特性就体现在它们都包含下面的属性和方法(方法实际上也是一种属性,只是属性的值类型是函数的话,我们也称之为方法): 类别属性/方法说明属性constructor指向用于创建当前对象的函数方法hasOwnProperty(propertyName)检查给定的属性是否在当前对象实例中propertyIsEnumerable(propertyName)检查给定的属性是否能够是使用for-in语句来枚举isPrototype(object)检查传入的对象是否是另一个对象的原型toLocalString()返回对象的字符串表示,该字符串与执行环境的地区相对应toString()返回对象的字符串表示valueOf()返回对象的字符串、数值或布尔值表示,通常与toString()方法返回值相同注:在《JavaScript高级程序设计(第3版)》第页中的Constructor将首字母大写了,应该是一个印刷错误。 属性和方法的访问有两种方式: (1)使用点号(.):如person.name。 (2)使用方括号([]):如person[name],使用这种方式,方括号内部可以是一个变量或者表达式,这使得可以访问名称包含特殊符号的属性和方法。   通过结合for-in和这里的hasOwnProperty (propertyName),我们就可以遍历对象实例自身的属性而不包括从原型链继承而来的属性了:

推荐整理分享JavaScript高级程序设计(第3版)学习笔记6 初识js对象(javascript高级程序设计pdf百度云),希望有所帮助,仅作参考,欢迎阅读内容。

JavaScript高级程序设计(第3版)学习笔记6 初识js对象(javascript高级程序设计pdf百度云)

文章相关热门搜索词:javaScript高级程序设计,javascript高级程序设计pdf下载,javascript高级程序设计第六版,javascript高级程序设计电子版,javaScript高级程序设计,javascript高级程序设计电子版,javascript高级程序设计第六版,javascript高级程序设计电子版,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript高级程序设计(第3版)学习笔记7 js函数(上) 变量类型在说函数之前,先来说说变量类型。1、变量:变量在本质上就是命名的内存空间。2、变量的数据类型:就是指变量可以存储的值的数据类型

JavaScript高级程序设计(第3版)学习笔记8 js函数(中) 6、执行环境和作用域(1)执行环境(executioncontext):所有的JavaScript代码都运行在一个执行环境中,当控制权转移至JavaScript的可执行代码时,就进入了

JavaScript高级程序设计(第3版)学习笔记9 js函数(下) 再接着看函数——具有魔幻色彩的对象。9、作为值的函数在一般的编程语言中,如果要将函数作为值来使用,需要使用类似函数指针或者代理的方式来

标签: javascript高级程序设计pdf百度云

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

上一篇:JavaScript高级程序设计(第3版)学习笔记5 js语句(javascript高级程序设计电子书)

下一篇:JavaScript高级程序设计(第3版)学习笔记7 js函数(上)(javascript高级程序设计pdf百度云)

  • 公司首次申报个税怎么填
  • 小规模纳税人所得税税率是5还是2.5
  • 滑准税是指关税的税率
  • 怎么结转未交增值税
  • 工商年审实缴时间
  • 防伪开票系统技术维护费怎么做分录
  • 银行存款出现负数算不算违规
  • 退还押金怎么做账
  • 支付宝理财提现到银行卡有费用吗
  • 税收优惠退税账户是什么
  • 发票没作废写上作废了怎么办
  • 取得保险赔偿的会计分录
  • 房地产企业预售阶段企业所得税
  • 营改增后哪些费用可以抵扣
  • 自建房屋房产税纳税义务发生时间
  • 股东往来款怎么处理
  • 递延收益可以是负数吗
  • 案例分析个人总结报告
  • 免税和不征税货一样吗
  • 股东垫支开办费
  • 一年期电子银行承兑汇票
  • 预转固的好处
  • 合同银行账户与开票信息不一致会计如何处理
  • 会计人员需要承担的责任
  • 存货盘亏进项税额转出会计分录怎么做
  • 酷狗云盘是干什么用的
  • 不开票收入申报是含税收入吗
  • 增值税专用发票丢了怎么补救
  • php代码自动生成
  • scworker.exe是病毒
  • 电和电能是什么关系
  • 以物易物双方做什么处理
  • vscode怎么看错误提示
  • opencv 边缘
  • 编程中char什么意思
  • 魔改apk
  • typescript类型别名
  • win11更新22468
  • 三代手续费返还是否需要缴纳增值税
  • 长投转可供
  • 员工通行费合法报销
  • 极速开票怎么打不开
  • 其他货币资金微利
  • 残疾人保证金如何做账
  • 确认递延所得税资产时,应估计相关可抵扣
  • 车间购买办公用品
  • wordpress主题安装好后怎么设置
  • 电竞公司要求
  • 固定资产原值和净值在报表哪里看
  • 预期信用损失率的确认依据和过程
  • 安全生产费会计核算办法
  • 暂估成本的账务处理分录
  • 交易性金融资产的账务处理
  • 商业会计怎么做会计分录
  • 开立银行承兑汇票利率
  • 出售未到折旧年金怎么算
  • 增值税附加税有哪些
  • 残疾人就业保障金征收使用管理办法
  • 如何监测和优化电池寿命
  • win9怎么升级win10
  • freebsd使用wifi
  • windows xp升级为windows 7
  • ntfs跟fat32
  • os x10.11el capitan beta5更新了什么?os x10.11el capitan beta5下载地址
  • mac不用密码
  • supporter5.exe - supporter5是什么进程
  • redhat本地yum配置的基本步骤
  • 电脑arp攻击怎么解决
  • linux查找文件语句
  • cocos2dx在暂停某些元素后导致crash问题
  • three.js dispose
  • js判断手机浏览器设置了电脑版浏览
  • 无线adb调试开关下载
  • arp绑定用户直接上网是什么意思
  • shell脚本中执行命令语句
  • 学javascript的书
  • 使用jquery计算li元素的个数
  • 修改应用程序图标
  • 重庆网上税务局个人怎么绑定企业账户
  • 公司购买车辆是什么费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设