javascript如何模拟Json语句的函数全局范围?javascript如何模拟Json语句的函数全局范围?
var testJson=
{
a1: 1,
a2: this.a1+1
}
,其结果应该是:
var testJson=
{
a1: 1,
a2: 2
}
javascript如何模拟Json语句的函数全局范围?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;
}
};
JSON不支持代码执行。 JSON specification只是用于序列化和反序列化传输信息的一种手段。 JSON字符串中不应有可执行的内容。
JSON解析器在遇到JSON字符串中的非文字值时应该失败。
此规则的唯一例外是JSON-P,它在函数调用中封装JSON字符串以绕过跨域机制。
好吧,这不是真的JSON,它只是JavaScript语法。 – Pointy 2010-05-21 18:51:35
我不认为这很容易。这可能是可能的,但它可能涉及从对象创建一个函数并返回。这将是一个容易得多:
var testJson=
{
a1: 1,
a2: function(){return this.a1+1}
}
,你可以评估使用
testJson.a2();
这应该工作的开箱
你的意思是'无功testJson = {A1:1}; testJson.a2 = testJson.a1 + 1;'?你想要的只能通过函数调用来完成,而不是对象符号,至少不能以你想要的方式去做......除非我完全是误会。 – 2010-05-21 18:47:26
你为什么需要这样做? – Eric 2010-05-21 19:05:17
@Nick Craver:你说的对,我只是想减少代码。 正确的方法是: VAR testJson = { A1 :1, A2:testJson.a1 + 1 } – guaike 2010-05-22 02:09:52