我有一個完美正確的Json字符串,它通過使用eval函數在函數的方法內解析。但是,當完成時,由於某些未知原因,全局定義方法的第一行將作爲數組參數之一注入到內部。Json字符串的JavaScript eval()注入全局作用域函數
正在分析的字符串是:
{ 「ID」:1, 「名稱」: 「object1」, 「體積」:15, 「重量」:100}
解析行是:
var decoded = eval('('+ encoded +')');一旦通過使用eval()函數解碼,我已經得到了內部解碼['replaceNode']的「互補」屬性,其中包含一個包含在另一個文件中的全局作用域函數。
我認爲它是一個錯誤,但既然firefox和safari發生同樣的情況,似乎不太可能。更可能是我誤解了eval的目的。
非常感謝您的幫助。
你有代碼與Object.prototype分離?這可能會使所有對象都具有附加屬性。 – goat 2012-04-26 03:54:44
事實是,'eval'有一個用途:*以JS代碼*的形式運行一個字符串。不解析JSON,不解析任何東西。 **執行任意字符串**它不知道或不關心字符串代碼將執行什麼操作,如果您不執行任何操作,則會對您的站點執行一些笨拙的控制。如果你的JSON確實是正確的,你可以使用'JSON.parse'來代替。它現在嵌入到每個體面的瀏覽器中。 – cHao 2012-04-26 04:00:34