2013-10-17 54 views
2

我最近閱讀了很多關於JSON和JavaScript對象的內容。但我變得越來越困惑,對我很好,他們經常看起來一樣。從我的HTML輸入框JSON,Object&Class混淆

function Person(Name, Lastname, Age, sGender) 
{ 
    this.Name = Name; 
    this.Lastname = Lastname; 
    this.Age = Age; 
    this.sGender = sGender; 
} 


var person = new Person(
    $('#PersonName').val(), 
    $('#PersonLastName').val(), 
    $('#PersonLastName').val(), 
    $('#PersonAge').val(), 
    $("#gender input[type='radio']:checked").val() 
); 

的#PersonName等都是:

我創建了我實例化一個對象像這樣的JavaScript類。在這一部分,我知道我在做什麼。

但後來我讀到關於創建對象的一個​​簡單的方法,所以我給它一去:

var oPerson = 
{ 
    "Name": $('#PersonName').val(), 
    "Lastname": $('#PersonLastName').val(), 
    "Age": $('#PersonAge').val(), 
    "sGender": $("#gender input[type='radio']:checked").val() 
} 
aPeople.push(oPerson); 
return oPerson; 

但現在我真的很困惑什麼上面的代碼。這是JSON還是隻是一個JavaScript對象?

我希望你們中的一些聰明的頭腦能爲我闡明一些事情。 :)

+0

頂層代碼是一個類,底層代碼是一個標準的JS對象。 – tymeJV

+1

相關:http://stackoverflow.com/q/2904131/497356 –

回答

2

JSON = JavaScript對象表示法。也就是說,JSON是JavaScript對象的文本表示。 JSON表示法恰好與JavaScript對象具有相同的語法(或者至少是JavaScript對象的風格)。

無論何時您使用JavaScript創建對象(如上面的代碼),它都是一個JavaScript對象。當您以文本方式傳輸JavaScript對象時,您可以使用JavaScript中非常自然的JSON表示法。但是您也可以使用其他格式,如XML或甚至專有格式。

但JSON僅僅是一個對象的表示。當它在代碼中時,它是一個實際的對象。

1

第一個示例創建一個類Person並將其實例化爲一個Person對象。 第二個示例只創建一個對象字面值,它只是一個簡單的Javascript對象。

以上都不是JSON,它是數組或對象的字符串表示形式。例如,這是JSON:

var json = '{ "Name": "John", "LastName" : "Adnaves" }'; 

正如你可以看到它非常近似於一個Javascript對象,但關鍵的一點是它是一個字符串。

1

第二種情況稱爲對象文本符號,它的語法如下:

{ 
    propertyName: value; 
    propertyName2: value, 
    . 
    . 
    propertyNameN: value 
} 

你提到的第一個案例Person創建一個類,或者更確切的說:它是一個構造函數用於創建Person的實例。

當您想要創建繼承功能並相互共享公共屬性的對象時,它非常有用。

JSON *(就像@Pete所說的)是Javascript Object Notation。

它的語法非常相似,對象文本,但也有一定的事情,JSON不能代表(對象文本符號可以做到這一點)喜歡的功能,正則表達式對象,無窮大,NaN,不確定等。

換句話說,JSON是對象的字符串表示形式,它用於跨不同計算機傳輸該對象(主要是其屬性,如果願意的話)