javascript如何模拟Json语句的函数全局作用域?
var testJson=
{
a1: 1,
a2: this.a1+1
}
,结果应为:
var testJson=
{
a1: 1,
a2: 2
}
答案 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();
这应该开箱即用