我在 Stackoverflow 上看到了一个与我类似的问题,但大多数人只是提供了各种解决方法,而我并不在寻找。
我希望我的 JSON 中的属性能够引用同一对象中的先前属性:
var x = {
a : 1,
b : a + 1
};
我试过b : this.a + 1
了,但这不起作用。
为什么我不能用“a”来定义“b”?同样,我不是在寻找解决方法,只是在寻找洞察力和理解力。
谢谢
我在 Stackoverflow 上看到了一个与我类似的问题,但大多数人只是提供了各种解决方法,而我并不在寻找。
我希望我的 JSON 中的属性能够引用同一对象中的先前属性:
var x = {
a : 1,
b : a + 1
};
我试过b : this.a + 1
了,但这不起作用。
为什么我不能用“a”来定义“b”?同样,我不是在寻找解决方法,只是在寻找洞察力和理解力。
谢谢
你不能那样做。当您创建一个对象时,它及其属性在语句完成之前不存在。您不能在创建时引用对象或其属性。
你可以这样做:
var x = {a: 1};
x.b = x.a + 1;
PS这不是JSON。它是一个 JavaScript 对象。JSON 是数据的字符串表示形式,恰好与 JavaScript 语法非常相似。 var x = {a: 1}
是一个对象,'{"a": 1}'
(一个字符串)是 JSON。
this
是全局对象,因此在您的示例中,它没有a
属性。
您可以通过浏览器控制台中的一个简单示例看到这一点
var object = { test: this };
console.log(object);
你会发现那object
是Window
对象。