對象與json-8.24

本章目標

  1. 認識了解對象
  2. 如何創建對象
  3. 對象有數組的區別于聯系

知識點?

一、 為什么要有對象 ,怎么創建對象

對象嗎?就當和現實中的對象一樣:一個"人"對象

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轉 字符

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容