在写代码的时候,我往往因为一个小基础知识点未能掌握好 ,而耗费很多时间。
这次在使用json格式的时候,也遇到这么一个问题,先让我总结一个知识点吧。
var LangShen = {"Name":"Langshen","AGE":"28"};
这是一个json对象
{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数
上面声明了一个名为“LangShen”的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性,
那么我们访问的时候会有两种方式:
访问方式一:LangShen.Name、LangShen.AGE
访问方式二:LangShen["Name"]、LangShen["AGE"]
就是这么一个小小的方式,会有什么区别呢
下面我写些自己的理解,如有错误,欢迎指正,
在实际应用中,第一种方式的.Name实际是作为一个对象被调用,而LangShen["Name"]里的name却可以是一个字符串。
这里我列个例子给大家看一下。
<html>
<head>
<title>键值对实现</title>
<script src="jquery-1.4.1.min.js"></script><!--这里需要你自己导入jqurey-->
</head>
<body>
<div>
<input type="text" value="Amount,saleMoney,ntSaleMoney,invoiceMoney," id="selectValues" />
<input type="button" value="点击提交" οnclick="selectValuesHead();" />
</div>
<script language="javascript">
//用键值对实现拼接成新的字符串
var selectValuesHead=function(){
var f={//单列模式
newStr:function(){
var words={
purchaseMoney: "采购总额(总)",
ntPurchaseMoney:"不含税采购总额(总)",
Amount: "销售总量(总)",
saleMoney: "销售总额(总)",
ntSaleMoney: "不含税销售总额(总)",
invoiceMoney: "开票总额(网)",
ntinvoiceMoney: "不含税开票总额(总)",
profitVolume: "毛利总额(总)",
erpOrderNum: "全部单据数",
saleDetailNum: "销售明细数",
purchaseMoney3: "采购总额(网)",
ntPurchaseMoney3:"不含税采购总额(网)",
amount3: "销售总量(网)",
saleMoney3: "销售总额(网)",
ntSaleMoney3: "不含税销售总额(网)",
invoiceMoney3: "开票总额(网)",
ntinvoiceMoney3:"不含税开票总额(网)",
profitVolume3: "毛利总额(网)",
webOrderNum: "网站订单数"
}
return words;
},
ui: function(){
var selectValuesHead = $.trim($("#selectValues").val());
var tempArray=[];//临时数组
Array.prototype.push.apply(tempArray, selectValuesHead.split(","));
var valuesHead="";//页面需要使用到的字符串
var tempLen = tempArray.length;
for(var i=0;i<tempLen;i++){
if(tempArray[i].length>0){
valuesHead+="<li>"+this.newStr()[tempArray[i]]+"</li>";
}
}
alert(valuesHead);
}
};
f.ui();
}
</script>
</body>
</html>
如上,我打底色的地方,newStr()返回一个json对象,这里就是使用第二种方式来调用,因为tempArray[i]是一个字符串,如你想用第一种方式来调用,是没有办法的。