2012-05-23 74 views
1

我有一個包含由其他數組組成的數組的對象,它也包含方法。我面臨的問題是我不能使用JSon,因爲多維數組和方法。如何將一個複雜的javascript對象轉換爲字符串並返回

我想將其轉換爲字符串的原因是存儲到Iphone的 localStorage。

你只能在那裏存儲文本,我希望有一種方法可以將一個關於用戶的複雜對象存儲爲字符串,並且能夠在之後再次反序列化它。有甚至有辦法做到這一點。我不太瞭解JavaScript以編寫自己的api。這是我開始嘗試並看看在這一點:(

+0

JSON可以編碼多維數組,而不是方法。 – Pointy

+0

你使用JQuery嗎? –

+0

你不能只保存.js腳本,然後嘗試在運行時eval()嗎?但我不知道你是否可以真正從本地存儲中讀取和執行。 – BigMike

回答

2

它序列化到JSON。你可以序列化/反序列化複雜的對象和數組的選項。

有沒有辦法可以序列方法(代碼) 。

對於本地存儲持久性,我建議Lawnchair

+0

但不是方法... – Alnitak

+0

http://jsfiddle.net/mplungjan/8MzTV/顯示我的方法... – mplungjan

+0

@mplungjan是的,因爲'alert()'做了一個隱式的'。 toString()'在每個參數上。 JSON串行器將拒絕這麼做。 – Alnitak

0

沒有必要的localStorage存儲,您可以使用全局數組的任何地方在您的應用程序嘗試這一次

+1

不,我需要localStorage,以便他們可以退出並稍後再回來。該對象包含很多東西 –

0

這是正常婆ssible以連載使用myfunc.toString()

所以,你可以使用replacer功能JSON.stringify()JSON.parse()識別方法的方法,並呼籲.toString()在他們身上,他們在某種程度上承認他們在解析,並把它們放回第一類函數。

然而 - 注意,重構功能將無法訪問原來的對象的範圍,即私有變量或方法等

例如

function A() { 
    var foo = 'bar'; 
    this.test = function test() { console.log(foo) }; 
}; 

var b = new A(); 
var f = b.test.toString(); // the text of the method 
b.test2 = new Function(f); 

b.test2(); 
> undefined 
相關問題