javascript如何模拟Json语句的函数全局作用域?

时间:2010-05-21 18:40:17

标签: javascript

javascript如何模拟Json语句的函数全局作用域?

   var testJson=
    {
        a1: 1,
        a2: this.a1+1
    }

,结果应为:

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

JSON解析器在遇到JSON字符串中的非文字值时会失败。

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

答案 2 :(得分:0)

我认为这不容易。它可能是可能的,但它可能涉及从对象创建一个函数并再次返回。这会容易得多:

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

您可以使用

进行评估
testJson.a2();

这应该开箱即用