JSON,对象&阶级混乱

时间:2013-10-17 14:06:03

标签: javascript json object

我最近读了很多关于JSON和JavaScript对象的内容。但是我变得越来越困惑,对我来说,他们经常看起来一样。

我创建了一个JavaScript类,我实例化到这样的对象:

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等来自我的HTML输入框。在这一部分,我知道我在做什么。

但后来我读到了一个更简单的创建对象的方法,所以我给了它一个去:

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对象?

我希望你们中的一些聪明人能够为我揭示这一点。 :)

3 个答案:

答案 0 :(得分:2)

JSON = JavaScript对象表示法。也就是说,JSON是JavaScript对象的文本表示。 JSON表示法恰好与JavaScript对象(或至少是一种JavaScript对象样式)具有相同的语法。

无论何时你在JavaScript中创建一个对象(如上面的代码所示),它都是一个JavaScript对象。当您将JavaScript对象作为文本传输时,您可以使用JavaScript中非常自然的JSON表示法。但您也可以使用其他格式,例如XML甚至是专有格式。

但JSON只是一个对象的表示。当它在代码中时,它是一个实际的对象。

答案 1 :(得分:1)

第一个示例创建一个类Person并将其实例化为Person对象。 第二个例子只是创建一个对象文字,它只是一个简单的Javascript对象。

以上都不是JSON,它是数组或对象的字符串表示。例如,这是JSON:

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

正如您所看到的,它非常类似于Javascript对象,但关键是它是一个字符串。

答案 2 :(得分:1)

第二种情况称为Object Literal Notation,其语法如下:

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

您提到的第一个案例为Person创建了一个类,或者更确切地说:它是一个用于创建Person实例的构造函数。

当您想要创建继承功能并相互共享公共属性的对象时,它非常有用。

JSON *(正如@Pete所说)也是Javascript Object Notation。

它的语法与Object文字非常相似,但是JSON不能代表某些东西(Object Literal Notation可以这样做)类似函数,RegExps对象,无穷大,NaN,未定义,等等。

换句话说,JSON是Object的字符串表示形式,它用于在不同的计算机上传输该对象(主要是它的属性,如果你愿意的话)