我正在做一個需要通過JSON將Perl對象傳遞給javascript的項目。我在「中間」對象定義方面面臨一個問題。有沒有辦法只通過分配屬性來自動創建一個JavaScript對象?
在Perl中,對象由散列表示,程序員不必定義任何「在中間」。一旦創建了一個屬性,所有的中間對象都會自動創建爲散列引用。例如
$graph{chart}{yAxis}{title} = "Temperature Tracking";
然而,一旦這個對象傳遞給JavaScript中,如果我想在「中間」對象添加任何新特性,如:
graph.chart.xAxis.title = "Time Sequence";
我將有一個「不確定的圖表。 chart.xAxis「錯誤。與Perl不同的是,如果我們只是爲它指定一個屬性,Javascript不會自動創建對象。
目前,我必須使用以下解決方案:
if (!graph.chart.xAxis) {
graph.chart.xAxis = {};
graph.chart.xAxis.title = "Time Sequence";
}
不幸的是,在我們的項目從Perl中傳遞的對象是非常動態的,有很多是JavaScript可能不知道其他對象。上面的方法使得JS代碼非常冗長和「看起來很醜陋」。有沒有更好的解決方案,使Javascript的行爲像Perl,這意味着我不必手動創建中間對象?
好了,你可以簡單地編寫創建所有缺少的對象的一個小功能。 – Niko 2013-03-17 09:36:13
@Niko我不確定,但JavaScript沒有autovivification,對不對?你怎麼看這個函數檢查丟失的對象? – gaussblurinc 2013-03-17 09:39:30
@Ioldop請參閱下面的答案。你必須使用字符串來做到這一點。 – Niko 2013-03-17 09:52:10