JSON

对象与 JSON(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-13 12:00 我要评论( )

这一节我们详细说明第二种方式,如: //定义一个"类",Address function Address(street, xno){this.street = street || 'Huang Quan Road';this.xno = xno || 135;this.toString = function(){return "street : "

这一节我们详细说明第二种方式,如:

//定义一个"类",Address function Address(street, xno){ this.street = street || 'Huang Quan Road'; this.xno = xno || 135; this.toString = function(){ return "street : " + this.street + ", No : " + this.xno; } } //定义另一个"类",Person function Person (name, age, addr) { this.name = name || 'unknown'; this.age = age; this.addr = addr || new Address(null, null); this.getName = function () {return this.name;} this.getAge = function(){return this.age;} this.getAddr = function(){return this.addr.toString();} } //通过new操作符来创建两个对象,注意,这两个对象是相互独立的实体 var jack = new Person('jack', 26, new Address('Qing Hai Road', 123)); var abruzzi = new Person('abruzzi', 26); //查看结果 print(jack.getName()); print(jack.getAge()); print(jack.getAddr()); print(abruzzi.getName()); print(abruzzi.getAge()); print(abruzzi.getAddr());

运行结果如下:

jack 26 street : Qing Hai Road, No : 123 abruzzi 26 street : Huang Quan Road, No : 135 JSON 及其使用

JSON 全称为 JavaScript 对象表示法(JavaScript Object Notation),即通过字面量来表示一个对象,从简单到复杂均可使用此方式。比如:

var obj = { name : "abruzzi", age : 26, birthday : new Date(1984, 4, 5), addr : { street : "Huang Quan Road", xno : "135" } }

这种方式,显然比上边的例子简洁多了,没有冗余的中间变量,很清晰的表达了 obj 这样一个对象的结构。事实上,大多数有经验的 JavaScript 程序员更倾向与使用这种表示法,包括很多 JavaScript 的工具包如 jQuery,ExtJS 等都大量的使用了 JSON。JSON 事实上已经作为一种前端与服务器端的数据交换格式,前端程序通过 Ajax 发送 JSON 对象到后端,服务器端脚本对 JSON 进行解析,还原成服务器端对象,然后做一些处理,反馈给前端的仍然是 JSON 对象,使用同一的数据格式,可以降低出错的概率。

而且,JSON 格式的数据本身是可以递归的,也就是说,可以表达任意复杂的数据形式。JSON 的写法很简单,即用花括号括起来的键值对,键值对通过冒号隔开,而值可以是任意的 JavaScript 对象,如简单对象 String,Boolean,Number,Null,或者复杂对象如 Date,Object,其他自定义的对象等。

JSON 的另一个应用场景是:当一个函数拥有多个返回值时,在传统的面向对象语言中,我们需要组织一个对象,然后返回,而 JavaScript 则完全不需要这么麻烦,比如:

function point(left, top){ this.left = left; this.top = top; //handle the left and top return {x: this.left, y:this.top}; }

直接动态的构建一个新的匿名对象返回即可:

var pos = point(3, 4); //pos.x = 3; //pos.y = 4;

使用 JSON 返回对象,这个对象可以有任意复杂的结构,甚至可以包括函数对象。 在实际的编程中,我们通常需要遍历一个 JavaScript 对象,事先我们对对象的内容一无所知。怎么做呢?JavaScript 提供了 for..in 形式的语法糖:

for(var item in json){ //item为键 //json[item]为值 }

这种模式十分有用,比如,在实际的WEB应用中,对一个页面元素需要设置一些属性,这些属性是事先不知道的,比如:

var style = { border:"1px solid #ccc", color:"blue" };

然后,我们给一个 DOM 元素动态的添加这些属性:

for(var item in style){ //使用jQuery的选择器 $("div#element").css(item, style[item]); }

当然,jQuery 有更好的办法来做这样一件事,这里只是举例子,应该注意的是,我们在给$("div#element")添加属性的时候,我们对 style 的结构是不清楚的。

另外比如我们需要收集一些用户的自定义设置,也可以通过公开一个 JSON 对象,用户将需要设置的内容填入这个 JSON,然后我们的程序对其进行处理。

function customize(options){ this.settings = $.extend(default, options); }

上一篇: 下一篇:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Java JSON技术框架选型、测试及简单使用

    Java JSON技术框架选型、测试及简单使用

    2017-03-11 13:02

  • 浅谈javascript的url参数parse和build函数

    浅谈javascript的url参数parse和build函数

    2017-03-10 12:04

  • 解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    2017-03-07 10:23

  • 使用Cookie和JSON记录用户最近浏览历史

    使用Cookie和JSON记录用户最近浏览历史

    2017-03-01 17:02

网友点评