本章目標(biāo)
- 認(rèn)識(shí)了解對(duì)象
- 如何創(chuàng)建對(duì)象
- 對(duì)象有數(shù)組的區(qū)別于聯(lián)系
知識(shí)點(diǎn)?
一知纷、 為什么要有對(duì)象 ,怎么創(chuàng)建對(duì)象
對(duì)象嗎?就當(dāng)和現(xiàn)實(shí)中的對(duì)象一樣:一個(gè)"人"對(duì)象
var person = new Object();
person.age = 18;
person.weight = "123kg";
person.height = "170cm";
person.arm = 2;//兩個(gè)臂膀
person.leg = 2;
var person={"age":18,"weight":"123kg","height":"170cm","arm":2,"leg":2}
上面創(chuàng)建的對(duì)象,描述了現(xiàn)實(shí)中的人的一些特性:年齡 18;重量 123kg;身高 170cm;不是殘疾(這個(gè)是我推斷的); 其實(shí)數(shù)組也能完成這樣的工作
對(duì)象是一堆屬性的集合,其實(shí)它和數(shù)組是相通的
二、對(duì)象與數(shù)組的區(qū)別于聯(lián)系
var obj = new Object();//創(chuàng)建一個(gè)對(duì)象
obj.property = "value";//使用點(diǎn)語(yǔ)法給對(duì)象添加屬性
alert(obj);//只會(huì)輸出含糊的[object Object]
alert(obj.property);//真正的數(shù)據(jù)全存儲(chǔ)在它的屬性上面
var obj={"property":"value"}
2.1 用數(shù)組的方式創(chuàng)建一個(gè)對(duì)象
上面創(chuàng)建的對(duì)象,描述了現(xiàn)實(shí)中的人的一些特性:年齡 18;重量 123kg;身高 170cm; 其實(shí)數(shù)組也能完成這樣的工作
var person = new Array();
person[0] = 18;
person[1] = "123kg";
person[2] = "170cm";
person[3] = 2;
person[4] = 2;
但是這樣的表達(dá)方式,沒(méi)人能看出這是一個(gè)"人"對(duì)象,使用數(shù)字下標(biāo)沒(méi)有對(duì)象的屬性明了,代碼難于理解. 其實(shí)數(shù)組可以使用字符串下標(biāo)的
var person = new Array();
person["age"] = 18;//注意,中括號(hào)里的下標(biāo)是一個(gè)字符串,所以需要使用引號(hào)
person["weight"] = "123kg";
person["height"] = "170cm";
person["arm"] = 2;
person["leg"] = 2;
2.2 數(shù)組和對(duì)象是相通的
var arr = new Array();
var obj = new Object();
alert(typeof arr);//object
alert(typeof obj);//object
所以,數(shù)組用字符串下標(biāo),事實(shí)上也是在給其添加屬性
var arr =[1,2,3];
arr["property"]="some data";
alert(arr.property);//"some data"
//但注意的是,數(shù)組的length屬性只能報(bào)告具有數(shù)字下標(biāo)的元素的個(gè)數(shù)
alert(arr.length);//3
2.3 循環(huán)對(duì)象與數(shù)組
對(duì)于數(shù)組,我們可以使用for對(duì)其進(jìn)行遍歷,但for循環(huán)只能遍歷具有數(shù)字下標(biāo)的元素
var arr =[1,2,3,4];
arr["stringIndex"]="some data";//這個(gè)不會(huì)被遍歷到
alert(arr.length);//arr.length屬性也不報(bào)告包含此元素
for (var i=0;i< arr.length;i++) {
alert(arr[i]);//i只會(huì)是數(shù)字,所以不能遍歷字符串下標(biāo)的元素
}
for.. in...循環(huán)出現(xiàn)了 (對(duì)于研究對(duì)象,for in循環(huán)太有用了)
var arr = [1,2,3,4,5,6];
arr["property"]=78;//會(huì)被遍歷到,因?yàn)樗菍傩?
for (var i in arr) {
alert(i+" : "+arr[i]);
}
對(duì)于數(shù)組,我們可以使用for對(duì)其進(jìn)行遍歷,但for循環(huán)只能遍歷具有數(shù)字下標(biāo)的元素
var obj={ "age":12,"height":170};
for (var i in obj) {//i將會(huì)被列舉為鍵名,就是所說(shuō)的字符串的下標(biāo)
alert(i+"\n"+obj[i]);/*將會(huì)以類(lèi)似age
12
這樣的格式分別輸出它的鍵名鍵值對(duì)
*/
}
JSON (JavaScript Object Notation)
本章目標(biāo)
1互站, 了解json 使用json格式
知識(shí)點(diǎn)講解
一、 json
是一種輕量級(jí)的數(shù)據(jù)交換格式僵缺,我們稱之為JavaScript對(duì)象表示法
1.1 JSON結(jié)構(gòu):
數(shù)據(jù)在名稱/值對(duì)中
數(shù)據(jù)由逗號(hào)分隔
花括號(hào)保存對(duì)象
方括號(hào)保存數(shù)組
var peson= {
"name":"Bill Gates",
"street":"Fifth Avenue New York 666",
"age":56,
"phone":"555 1234567"};
1.2 JSON值:
數(shù)字(整數(shù)或浮點(diǎn)數(shù))
字符串(在雙引號(hào)中)
邏輯值(true 或 false)
數(shù)組(在方括號(hào)中)
對(duì)象(在花括號(hào)中)
null
{ "firstName":"John" , "lastName":"Doe" }
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }]
}
1.3 解析和序列化
如果是載入的JSON文件胡桃,我們需要對(duì)其進(jìn)行使用,那么就必須對(duì)JSON字符串解析成原生的JavaScript值磕潮。當(dāng)然翠胰,如果是原生的JavaScript對(duì)象或數(shù)組,也可以轉(zhuǎn)換成JSON字符串自脯。
對(duì)于講JSON字符串解析為JavaScript原生值之景,早期采用的是eval()函數(shù)。但這種方法既不安全膏潮,可能會(huì)執(zhí)行一些惡意代碼锻狗。
var txt = '{ "employees" : [' +
'{ "firstName":"Bill" , "lastName":"Gates" },' +
'{ "firstName":"George" , "lastName":"Bush" },' +
'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
eval("("+txt+")");
JSON.parse(txt);//字符轉(zhuǎn)json
JSON.stringify(obj)//json轉(zhuǎn) 字符