4

我在 Stackoverflow 上看到了一个与我类似的问题,但大多数人只是提供了各种解决方法,而我并不在寻找。

我希望我的 JSON 中的属性能够引用同一对象中的先前属性:

var x = {
   a : 1,
   b : a + 1
};

我试过b : this.a + 1了,但这不起作用。

为什么我不能用“a”来定义“b”?同样,我不是在寻找解决方法,只是在寻找洞察力和理解力。

谢谢

4

2 回答 2

3

你不能那样做。当您创建一个对象时,它及其属性在语句完成之前不存在。您不能在创建时引用对象或其属性。

你可以这样做:

var x = {a: 1};
x.b = x.a + 1;

PS这不是JSON。它是一个 JavaScript 对象。JSON 是数据的字符串表示形式,恰好与 JavaScript 语法非常相似。 var x = {a: 1}是一个对象,'{"a": 1}'(一个字符串)是 JSON。

于 2013-07-24T14:55:55.867 回答
0

this是全局对象,因此在您的示例中,它没有a属性。

您可以通过浏览器控制台中的一个简单示例看到这一点

var object = { test: this };
console.log(object);

你会发现那objectWindow对象。

于 2013-07-24T14:56:26.517 回答