位置: 编程技术 - 正文

JavaScript入门之对象与JSON详解(javascript教程chm)

编辑:rootadmin
JavaScript对象与传统的面向对象中的对象几乎没有相似之处,传统的面向对象语言中,创建一个对象必须先有对象的模板:类,类中定义了对象的属性和操作这些属性的方法。通过实例化来构筑一个对象,然后使用对象间的协作来完成一项功能,通过功能的集合来完成整个工程。而Javascript中是没有类的概念的,借助JavaScript的动态性,我们完全可以创建一个空的对象(而不是类),通过像对象动态的添加属性来完善对象的功能。 JSON是JavaScript中对象的字面量,是对象的表示方法,通过使用JSON,可以减少中间变量,使代码的结构更加清晰,也更加直观。使用JSON,可以动态的构建对象,而不必通过类来进行实例化,大大的提高了编码的效率。 Javascript对象 JavaScript对象其实就是属性的集合,这里的集合与数学上的集合是等价的,即具有确定性,无序性和互异性,也就是说,给定一个JavaScript对象,我们可以明确的知道一个属性是不是这个对象的属性,对象中的属性是无序的,并且是各不相同的(如果有同名的,则后声明的覆盖先声明的)。 一般来说,我们声明对象的时候对象往往只是一个空的集合,不包含任何的属性,通过不断的添加属性,使得该对象成为一个有完整功能的对象,而不用通过创建一个类,然后实例化该类这种模式,这样我们的代码具有更高的灵活性,我们可以任意的增删对象的属性。 如果读者有python或其他类似的动态语言的经验,就可以更好的理解JavaScript的对象,JavaScript对象的本身就是一个字典(dictionary),或者Java语言中的Map,或者称为关联数组,即通过键来关联一个对象,这个对象本身又可以是一个对象,根据此定义,我们可以知道JavaScript对象可以表示任意复杂的数据结构。 对象的属性 属性是由键值对组成的,即属性的名字和属性的值。属性的名字是一个字符串,而值可以为任意的JavaScript对象(JavaScript中的一切皆对象,包括函数)。比如,声明一个对象: 这种声明对象的方式与传统的OO语言是截然不同的,它给了我们极大的灵活性来定制一个对象的行为。 对象属性的读取方式是通过点操作符(.)来进行的,比如上例中jack对象的addr属性,可以通过下列方式取得: 后者是为了避免这种情况,设想对象有一个属性本身包含一个点(.),这在JavaScript中是合法的,比如说名字为foo.bar,当使用jack.foo.bar的时候,解释器会误以为foo属性下有一个bar的字段,因此可以使用jack[foo.bar]来进行访问。通常来说,我们在开发通用的工具包时,应该对用户可能的输入不做任何假设,通过[属性名]这种形式则总是可以保证正确性的。 属性与变量 在第二章,我们讲解了变量的概念,在本章中,读者可能已经注意到,这二者的行为非常相似,事实上,对象的属性和我们之前所说的变量其实是一回事。 JavaScript引擎在初始化时,会构建一个全局对象,在客户端环境中,这个全局对象即为window。如果在其他的JavaScript环境中需要引用这个全局对象,只需要在顶级作用域(即所有函数声明之外的作用域)中声明: 我们在顶级作用域中声明的变量将作为全局对象的属性被保存,从这一点上来看,变量其实就是属性。比如,在客户端,经常会出现这样的代码: 事实上相当于: 原型对象 原型(prototype),是JavaScript特有的一个概念,通过使用原型,JavaScript可以建立其传统OO语言中的继承,从而体现对象的层次关系。JavaScript本身是基于原型的,每个对象都有一个prototype的属性来,这个prototype本身也是一个对象,因此它本身也可以有自己的原型,这样就构成了一个链结构。 访问一个属性的时候,解析器需要从下向上的遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为null的对象(JavaScript的基对象Object的prototype属性即为null),如果此对象仍没有该属性,则返回undefined. 下面我们看一个具体的例子: 得出结果: child base 由于遍历原型链的时候,是有下而上的,所以最先遇到的属性值最先返回,通过这种机制可以完成重载的机制。 this指针 JavaScript中最容易使人迷惑的恐怕就数this指针了,this指针在传统OO语言中,是在类中声明的,表示对象本身,而在JavaScript中,this表示当前上下文,即调用者的引用。这里我们可以来看一个常见的例子: 运行结果: jack Abruzzi 应该注意的是,this的值并非函数如何被声明而确定,而是被函数如何被调用而确定,这一点与传统的面向对象语言截然不同,call是Function上的一个函数,详细描述在第四章。 使用对象 对象是JavaScript的基础,我们使用JavaScript来完成编程工作就是通过使用对象来体现的,这一小节通过一些例子来学习如何使用JavaScript对象: 对象的声明有三种方式: ◆ 通过new操作符作用域Object对象,构造一个新的对象,然后动态的添加属性,从无到有的构筑一个对象。 ◆ 定义对象的“类”:原型,然后使用new操作符来批量的构筑新的对象。 ◆ 使用JSON,这个在下一节来进行详细说明 这一节我们详细说明第二种方式,如: 运行结果如下: jack street : Qing Hai Road, No : abruzzi street : Huang Quan Road, No : JSON及其使用 JSON全称为JavaScript对象表示法(JavaScript Object Notation),即通过字面量来表示一个对象,从简单到复杂均可使用此方式。比如: 这种方式,显然比上边的例子简洁多了,没有冗余的中间变量,很清晰的表达了obj这样一个对象的结构。事实上,大多数有经验的JavaScript程序员更倾向与使用这种表示法,包括很多JavaScript的工具包如jQuery,ExtJS等都大量的使用了JSON。JSON事实上已经作为一种前端与服务器端的数据交换格式,前端程序通过Ajax发送JSON对象到后端,服务器端脚本对JSON进行解析,还原成服务器端对象,然后做一些处理,反馈给前端的仍然是JSON对象,使用同一的数据格式,可以降低出错的概率。 而且,JSON格式的数据本身是可以递归的,也就是说,可以表达任意复杂的数据形式。JSON的写法很简单,即用花括号括起来的键值对,键值对通过冒号隔开,而值可以是任意的JavaScript对象,如简单对象String,Boolean,Number,Null,或者复杂对象如Date,Object,其他自定义的对象等。 JSON的另一个应用场景是:当一个函数拥有多个返回值时,在传统的面向对象语言中,我们需要组织一个对象,然后返回,而JavaScript则完全不需要这么麻烦,比如: 直接动态的构建一个新的匿名对象返回即可: 使用JSON返回对象,这个对象可以有任意复杂的结构,甚至可以包括函数对象。 在实际的编程中,我们通常需要遍历一个JavaScript对象,事先我们对对象的内容一无所知。怎么做呢?JavaScript提供了for..in形式的语法糖: 这种模式十分有用,比如,在实际的WEB应用中,对一个页面元素需要设置一些属性,这些属性是事先不知道的,比如: 然后,我们给一个DOM元素动态的添加这些属性: 当然,jQuery有更好的办法来做这样一件事,这里只是举例子,应该注意的是,我们在给$("div#element")添加属性的时候,我们对style的结构是不清楚的。 另外比如我们需要收集一些用户的自定义设置,也可以通过公开一个JSON对象,用户将需要设置的内容填入这个JSON,然后我们的程序对其进行处理。

推荐整理分享JavaScript入门之对象与JSON详解(javascript教程chm),希望有所帮助,仅作参考,欢迎阅读内容。

JavaScript入门之对象与JSON详解(javascript教程chm)

文章相关热门搜索词:javascript快速入门,javascript快速入门,javascript入门教程,javascript快速入门教程,javascript教程chm,javascript基础入门视频教程,javascript入门教程,javascript入门教程,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript入门之基本函数详解 总的来说,函数在JavaScript中可以:◆被赋值给一个变量◆被赋值为对象的属性◆作为参数被传入别的函数◆作为函数的结果被返回◆用字面量来创建函

JavaScript入门之事件、cookie、定时等 一篇关于JavaScript语言入门的文章涵盖了JavaScript语言中许多最基础的内容,从创建脚本标签到使用注释、把JavaScript文件包含到HTML文档中、定义变量、使

浅谈JavaScript编程语言的编码规范 JavaScript编程语言作为最流行的客户端脚本语言,早已被众多Web开发人员所熟悉。随着Web2.0时代的到来和Ajax技术的广泛应用,JavaScript也逐渐吸引着更多

标签: javascript教程chm

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

上一篇:JavaScript内核之基本概念(javascript核心技术)

下一篇:JavaScript入门之基本函数详解(javascript入门教程)

  • 月初没报税可以领发票吗
  • 车辆购置税账务怎么处理流程
  • 小企业会计准则适用于哪些企业
  • 结转税金需要附件吗
  • 股权转让交的税如何做账
  • 融资性售后回租承租方出售资产为什么不缴纳增值税
  • 产品在海关发生质量问题
  • 付垫资款给其他公司应该怎么做账?
  • 每月计提折旧
  • 货车挂靠企业需要交增值税吗?
  • 没有进项的产品开了发票怎么办
  • 发票作废相关规定
  • 营改增后固定资产报废处置收入计税
  • 外地预缴的企业所得税可以退吗
  • 信息服务业税收优惠政策
  • 购买汽车分期付款利息怎么算
  • 冲销暂估入库的会计分录
  • 电脑找不到ie浏览器
  • 电脑记事本在哪里打开
  • zmweb.exe是什么进程
  • 金鱼花的养殖方法与注意事项
  • sonar-scanner需要配置环境变量
  • 家里装饰镜太多了怎么化解
  • 会计政策变更对财务分析的影响
  • vue导出word文档打开报错,内容有问题
  • vue数据可视化大屏布局
  • 前端开发工程师是干嘛的
  • 填写发票票种核实怎么填
  • 公对公的税票是怎么个流程
  • 房产税在企业所得税扣除内吗
  • 租赁公司一般都有什么税
  • 关联交易纳税调整期限
  • 出售固定资产不能作为企业的收入
  • 母公司与子公司的区别
  • mssql分布式数据库
  • 建筑劳务公司需要什么资质
  • 营业额的纳税比例是多少
  • 投资收益属于营业外收入吗为什么
  • 企业给员工交公积金怎么办理
  • 员工垫付的费用没有发票,放在工资里可以吗
  • 进项发票认证后暂不抵扣
  • 债务重组的账务处理和税收差异
  • 不动产出租要交什么税
  • 以融资租赁形式的车贷没还上可以拖车吗
  • 会计中借方和贷方各指什么
  • 支付国外客户佣金违法吗
  • 税金及附加如何预测
  • 网银退回是什么意思
  • 养老保险 退钱
  • 公司劳务过账的法律依据
  • 小规模纳税人季报网上申报流程
  • 让渡是什么
  • 个体工商户个税2023最新政策
  • sql如何学
  • xp无法创建目录或文件
  • task host windows解决
  • Win8.1 64位系统安装Office365出现30125-1011错误提示的故障原因及解决方法
  • 电脑取消开机密码显示不能改
  • dotnetfx35有什么用
  • windows8怎么设置
  • 服务win10
  • linux bash sh
  • windows7开机
  • uibutton设置圆角
  • 怎样判断滚动和滑动
  • extjs grid设置某列背景颜色和字体颜色的方法
  • css并集
  • js传参数有长度限制
  • Node.js中的construct构造函数
  • js的匿名函数
  • unity引擎用什么模拟器
  • Vue.js与 ASP.NET Core 服务端渲染功能整合
  • js获取浏览器类型和版本信息
  • 超详细的!!!2023澳门六开彩
  • ECLIPSE编辑器
  • jquery常用插件有哪些
  • jQuery EasyUI API 中文帮助文档和扩展实例
  • javascript面向对象精要
  • 天津定额发票查询真伪查询
  • 梦幻西游新版登录方式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设