2

我最近阅读了很多关于 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 对象?

我希望你们中的一些聪明的头脑可以为我阐明这一点。:)

4

3 回答 3

1

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

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

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

于 2013-10-17T14:10:29.307 回答
0

第一个示例创建一个类Person并将其实例化为一个Person对象。第二个示例只是创建了一个对象字面量,它只是一个普通的 Javascript 对象。

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

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

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

于 2013-10-17T14:10:37.017 回答
0

第二种情况称为 Object Literal Notation,它的语法如下所示:

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

您提到的第一种情况为 创建了一个类Person,或者更准确地说:它是一个构造函数,用于创建Person.

当您想要创建继承功能并彼此共享公共属性的对象时,它很有用。

JSON *(@Pete 也说过)是 Javascript 对象表示法。

它的语法与 Object 字面量非常相似,但有些东西 JSON 无法表示(Object Literal Notation 可以做到),例如函数、RegExps 对象、无穷大、NaN、未定义等。

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

于 2013-10-17T14:13:46.013 回答