+ -
当前位置:首页 → 问答吧 → JQuery插件中设置属性的变量

JQuery插件中设置属性的变量

时间:2011-10-25

来源:互联网

在使用Jquery插件的时候,经常会这样定义一个变量来设置其属性:
var aa = {
dateFormat: 'yy-mm-dd',
monthNamesShort:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
changeMonth: true,
changeYear: true,
dayNamesMin: ['日','一','二','三','四','五','六'],
yearRange: '1910:2011'
};

问题:
1、变量aa是什么类型?
2、如monthNamesShort或dayNamesMin他们的值是什么类型?数组吗?数组不是需要用new Array()定义的吗?

谢谢!

作者: wsy87217   发布时间: 2011-10-25

1, aa是json
2,monthNamesShort或dayNamesMin都是数组,JS是弱类型,不需要new Array(),new Object()这种形式
定义字符串 var str = "123";
定义数值 var i = 1;
定义数组 var arr = [1,2];
定义对象 var obj = {};

作者: liangws   发布时间: 2011-10-25

引用 1 楼 liangws 的回复:

1, aa是json
2,monthNamesShort或dayNamesMin都是数组,JS是弱类型,不需要new Array(),new Object()这种形式
定义字符串 var str = "123";
定义数值 var i = 1;
定义数组 var arr = [1,2];
定义对象 var obj = {};

那如果aa是json数据的话,
var china_m = {'01':'一','02':'二','03':'三'}
$('#abc').val(china_m[01]);
能用china_m[01]这种方式取值吗?不是应该先用eval()函数转义一下吗?

作者: wsy87217   发布时间: 2011-10-25

如果json数据的属性名能转换成数值的情况

var china_m = {'01':'一','02':'二','03':'三'}
请用china_m['01']
否则
var china_m = {'a':'一','b':'二','c':'三'}
china_m.a或者china_m['a']都可以

作者: liangws   发布时间: 2011-10-25

问题:
1、变量aa是什么类型?
2、如monthNamesShort或dayNamesMin他们的值是什么类型?数组吗?数组不是需要用new Array()定义的吗?

回答:
该变量是使用json语法规则描述的。json语法规则如下:
var aa={
"名称1":"值1",
"名称2":"值2"
}
其中,JSON 值可以是:
1.数字(整数或浮点数) 
2.字符串(在双引号中) 
3.逻辑值(true 或 false) 
4.数组(在方括号中) 
5.对象(在花括号中) 
6.null 

作者: crystal1205   发布时间: 2011-10-25

引用 3 楼 liangws 的回复:

如果json数据的属性名能转换成数值的情况

var china_m = {'01':'一','02':'二','03':'三'}
请用china_m['01']
否则
var china_m = {'a':'一','b':'二','c':'三'}
china_m.a或者china_m['a']都可以

哦,非常感谢你的回答!
再问一下,那为什么很多教程上在做Ajax(JSON传值)接收值处理的时候,都用eval()先转义一下呢?按你的解释直接用不就可以了吗?

作者: wsy87217   发布时间: 2011-10-25

引用 5 楼 wsy87217 的回复:

引用 3 楼 liangws 的回复:

如果json数据的属性名能转换成数值的情况

var china_m = {'01':'一','02':'二','03':'三'}
请用china_m['01']
否则
var china_m = {'a':'一','b':'二','c':'三'}
china_m.a或者china_m['a']都可以

哦,非常感谢你的回答!
再……

因为ajax返回的是一个字符串,并不是一个json对象,所以要eval把他转换成一个json对象后才能正常使用

作者: liangws   发布时间: 2011-10-25

楼上几位已经解释得很清楚了,飘过。。

作者: axiheyhey   发布时间: 2011-10-25

引用 6 楼 liangws 的回复:

引用 5 楼 wsy87217 的回复:

引用 3 楼 liangws 的回复:

如果json数据的属性名能转换成数值的情况

var china_m = {'01':'一','02':'二','03':'三'}
请用china_m['01']
否则
var china_m = {'a':'一','b':'二','c':'三'}
china_m.a或者china_m['……

我是用的php,我每次把值返回给JS的时候都是用json_encode()函数把一个字符串转换成JSON格式,那时候上课的时候,也就是说JS接到的返回值已经是JSON字符串了,我记得老师也是说eval是解译JSON数据的啊???

作者: wsy87217   发布时间: 2011-10-25

引用 8 楼 wsy87217 的回复:

引用 6 楼 liangws 的回复:

引用 5 楼 wsy87217 的回复:

引用 3 楼 liangws 的回复:

如果json数据的属性名能转换成数值的情况

var china_m = {'01':'一','02':'二','03':'三'}
请用china_m['01']
否则
var china_m = {'a':'一','b':'二','c':'三'……


这样把,你返回的时候typeof一下,就知道返回的是对象还是字符串了

function(data){
  alert(typeof data)
}

作者: liangws   发布时间: 2011-10-25