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