對(duì)象與json-8.24

本章目標(biāo)

  1. 認(rèn)識(shí)了解對(duì)象
  2. 如何創(chuàng)建對(duì)象
  3. 對(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ì)以類似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) 字符

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容