JS数组,JS对象,json数组,json对象,json字符串的区别和联系

1 篇文章 0 订阅

1 关于数组和对象的概念

1 数组

在计算机中,基本上任何语言的数组存储方式(加基本是因为不是所有语言我都懂啊..),都是以类型相同的数据(或者叫元素)连续地存储在地址空间里,他们在形式上也很相似,所以也可如此形容,数组是一组连续的相同类型的集合,第一个元素在数组中的下标表示为0。

比如js中的数组。在js中,可以这样初始化数组:

var num = new Array();
cars[0] = "one";
cars[1] = "two";
cars[2] = "three";

也可这样

var arr = new Array("one","two","three");

也可这样

var arr = [];
arr.push({"key1":"value1","key2":"value2"});
arr.push({"key3":"value3","key4":"value4"});
// 使用时
var value1 = arr[0].key1;
var value3 = arr[1].key3;

因为此时arr变成了js对象数组,,一对{}相当于一个数组元素,而里面有一对key/value。所以,数组的元素是基本类型,也可以是复杂类型,比如json字符串

var arr = new Array(
    '{"name":"Runoob", "url":"www.runoob.com"}',
    '{"name":"Google", "url":"www.google.com"}',
    '{"name":"Taobao", "url":"www.taobao.com"}');

在js代码请求服务器时,因为发送的是字符串,所以要把数据变成字符串,如果是json对象,则浏览器会转换为&name=value$name2=val2的形式发送

$.ajax({
             type: "POST",
             dataType:"json",
             url: "a url",
             data: {"name1":"val1","name2":"val2"},
             success: function(data){}
});

而请求返回的数据data,是object,而js里的对象,和json对象很类似,你可以这样使用data.key来取出值;

json数组就更好看一些,因为不论有多少中括号,最里面的元素都是key/value组成的基本json格式的数据,不会有特殊的东东。

{
"id":10086,
"task":"send",
"sites":[
    {"name":"Runoob", "url":"www.runoob.com"}, 
    {"name":"Google", "url":"www.google.com"},
    {"name":"Taobao", "url":"www.taobao.com"}
],
 "location":[
    {"name":"beijing","in":["north","east"]},
    {"name":"chongqing","in":["south","west"]}
]
"}

2 对象

js里面一切皆可为对象,就像c++一切皆对象一样。只不过这个对象,多了方法和属性。当然,c++里也有方法和属性....

你可以给js对象增加方法和属性,

var name = "one name"; // js对象
var name_len = name.length; // js对象的属性
var name_cap = name.toUpperCase(); //js对象的方法

你也可像上面的内建函数一样,使用构造函数给自己的对象加上方法:

			function person(name,age)
			{
				this.name = name;
				this.age = age;
				this.len = function(){
					return (this.name.length + this.age.length);
				}

			}
			p = new person("liu","122");
			alert(p.len());// 6

在概念上,js对象可以是json对象,而json对象不一定是js对象。

js对象可以是任何类型和形式的数据,就像c++或者java里自定义的类实例化的对象一样,而json对象只是其中一种而已。下面给obj添加两个属性,其中type2是json对象

// 创建js对象
var  obj = new Object();
// 给对象添加属性
obj.type1 = "value";
obj.type2 = {"name":"value"};
alert(obj.type1);
alert(obj.type2.name);

json对象如上所说,是key/value形式的

var json = {"name1":"value1", "name2":"value2"};

而json字符串,就是把json对象加上引号变成字符串而已啦,此时是文本,你就不能用obj.name1来取值了。

var json_text = ‘{"name1":"value1", "name2":"value2"}’;

但是,你可以用parse()方法把json字符串转换成js对象或json对象,来obj.name1这样去取值

var json_text = ‘{"name1":"value1", "name2":"value2"}’;
var obj = JSON.parse(json_text);
alert(obj.name1);

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值