在將javascript對象轉換爲JSON的時候,有一點是須要咱們注意的: 若是對象中包含有值爲函數和日期的屬性,JSON會忽略值爲函數的屬性,並將值爲日期的屬性轉換爲字符串。javascript
http://www.cnblogs.com/damonlan/archive/2012/03/13/2394787.htmlhtml
被轉換的內容能夠是 對象object, 也能夠是數組, 只是, 數組的話, 就不輸出前面的key了...java
即便是 經過 var o = new Object(); o.name="foo"; 的方式 建立的對象, 轉換成 json時, 仍然可以顯示, 輸出 key: value, 能夠依然是有效的..c++
replacer能夠是函數,或者數組 . 更多的是 函數, 表示 要處理 前面的 的key, value. 如:web
var jsonStr = JSON. stringify ( jsObj, function(key, value){ return value.toString().toUpperCase(); });
replacer 若是是數組, 第一個參數也是數組的化, 就只顯示第一個參數; 若是第一個是 new Object()對象 的化, ...json
spacer表示 分隔符號. 若是是數字, 表示 最多 能夠 縮進 10個 字符... 若是是 \r, 就用回車分隔, 若是是其餘字符串....分隔...vim
http://www.cnblogs.com/dolphinX/p/3270779.html數組
js中是有 "對象"的數據類型的! typeof .... : 返回的 是 Object.函數
js對象的定義方式:spa
var jsObj = new Object();
js的內置對象?
js是有一些內置對象的, 如:Array, Date, String. 功能強大, 使用簡單, "可是在處理一些複雜的邏輯時, 內置對象就顯得無能爲力了, 就須要 用戶本身定義 對象了.
內置對象的使用 是: 若是是類方法或 屬性, 直接使用 類名來 reference: 如: Array.staticAttr? 若是是類的實例的 方法 , 就要 先實例化 建立實例對象, 而後再使用 實例方法.
能夠認爲, 這些內置對象, 系統已經給咱們定義好了的, 屬性和方法都寫好了的, 用不着咱們再去寫了, 你也能夠 本身 寫一個 同名的 Array, Date類, 若是確實有必要的話!!
JSON 是js的內置對象, 意思就是 js object notation,(js 對象標記). 能夠認爲 JSON 是一種js的數據類型. 如Array 生成返回的是一個 數組! 實際上 JSON 表現是一種 字符串的形式, 不是對象的形式? 準確的說法是: JSON string:
parse: 是動詞, 不是parser , 是解析 json格式的 "字符串", 將 jsonStr -> jsObj.
jsObj -> jsonStr: var jsObj = {name: "foo", age: 20}; var jsonStr = JSON.stringify(jsObj); // stringify 表示 字符串 化 , 說的很明顯的, 就是代表了: JSON是一種 字符串! typeof jsonStr: JSON? jsonObj -> jsObj: var jsObj = JSON.parse(jsonStr); // typeof jsObj: Object?
你只看前面那個數字, 前面那個數字, 是當前光標所在的位置!(至於爲何是一個範圍, 還不知道?)
http://www.cnblogs.com/wangjunqiao/p/5718466.html , 說: JSON.parse(jsonStr)會解析 字符串 格式, 若是格式不正確, 即key, val沒有用 雙引號括起來, 等等語法錯誤, 會提示解析錯誤. 可是eval(...) 會解析其中 參數 的 任意 字符串, 不會進行格式 檢查, 並且, 最可怕的是, 它會去 執行字符串, 即, 若是字符串是能夠執行的js腳本 , 則 這個腳本將會執行! 因此, 若是惡意用戶, 向網頁中注入 惡意代碼 腳本,(也有多是 開發者, 那麼你訪問 網頁的 時候, 就會着了...