javascript如何模拟Json语句的函数全局范围?

javascript如何模拟Json语句的函数全局范围?,javascript,Javascript,javascript如何模拟Json语句的函数全局范围 var testJson= { a1: 1, a2: this.a1+1 } 结果应该是: var testJson= { a1: 1, a2: 2 } 您必须在testJson之外定义一个变量,或者使用一个函数作为a2的值,如下所示: var testJson = { a1: 1, a2: function () { return this.a1 +

javascript如何模拟Json语句的函数全局范围

   var testJson=
    {
        a1: 1,
        a2: this.a1+1
    }
结果应该是:

var testJson=
{
    a1: 1,
    a2: 2
}

您必须在
testJson
之外定义一个变量,或者使用一个函数作为
a2
的值,如下所示:

var testJson = {
  a1: 1,
  a2: function () {
    return this.a1 + 1;
  }
};

您必须在
testJson
之外定义一个变量,或者使用一个函数作为
a2
的值,如下所示:

var testJson = {
  a1: 1,
  a2: function () {
    return this.a1 + 1;
  }
};

JSON不支持代码执行。这只是一种对传输信息进行序列化和非序列化的方法。JSON字符串中不应有可执行内容

JSON解析器在遇到JSON字符串中的非文本值时应该失败


此规则的唯一例外是JSON-p,它在函数调用中封装JSON字符串以绕过跨域机制。

JSON不支持代码执行。这只是一种对传输信息进行序列化和非序列化的方法。JSON字符串中不应有可执行内容

JSON解析器在遇到JSON字符串中的非文本值时应该失败


这个规则的唯一例外是JSON-p,它在函数调用中封装JSON字符串,以绕过跨域机制。

我认为这不容易做到。这是可能的,但可能需要从一个对象创建一个函数,然后再创建一个函数。这将容易得多:

var testJson=
{
    a1: 1,
    a2: function(){return this.a1+1}
}
你可以用它来评估

testJson.a2();

这应该是现成的

我认为这不容易做到。这是可能的,但可能需要从一个对象创建一个函数,然后再创建一个函数。这将容易得多:

var testJson=
{
    a1: 1,
    a2: function(){return this.a1+1}
}
你可以用它来评估

testJson.a2();

这应该是开箱即用的

您的意思是
var testJson={a1:1};testJson.a2=testJson.a1+1?你想要的东西只能通过函数调用来完成,但不能用对象表示法,至少不能用你期望的方式来完成……除非我完全误解了。你为什么要这么做?@Nick Craver:你说得对,我只想编写更少的代码。正确的方法是:var-testJson={a1:1,a2:testJson.a1+1}你的意思是
var-testJson={a1:1};testJson.a2=testJson.a1+1?你想要的东西只能通过函数调用来完成,但不能用对象表示法,至少不能用你期望的方式来完成……除非我完全误解了。你为什么要这么做?@Nick Craver:你说得对,我只想编写更少的代码。正确的方法是:var testJson={a1:1,a2:testJson.a1+1}这不是真正的JSON,只是Javascript语法。这不是真正的JSON,只是Javascript语法。