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