javascript的對象 和 JSON 對象?

關於js和JSON的 一篇 好文章: http://www.68idc.cn/help/makewebs/javascript/20150704416007.html 講的很好 很易懂

在將javascript對象轉換爲JSON的時候,有一點是須要咱們注意的: 若是對象中包含有值爲函數和日期的屬性,JSON會忽略值爲函數的屬性,並將值爲日期的屬性轉換爲字符串。javascript

js object 的字面樣式的 對象變量的寫法, 跟json字符串的寫法 是基本 同樣的, 可是 二者的性質 是不一樣的!

http://www.cnblogs.com/damonlan/archive/2012/03/13/2394787.htmlhtml

在JSON.stringify(value [,replacer] [,spacer]); 中,

  • 被轉換的內容能夠是 對象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對象 的好文章: http://www.cnblogs.com/dolphinX/p/3288118.html

js的對象, 是用{...}來表示的,固然也能夠用 new Object()來生成, 這是一個 "很正式" 數據類型. 它能夠先c++同樣, 包含成員變量和 成員方法: 由成員函數的!!

  1. js中是有 "對象"的數據類型的! typeof .... : 返回的 是 Object.函數

  2. js對象的定義方式:spa

    • 使用構造函數: var jsObj = new Object();
    • 使用 直接的 "字面量" 形式: ` var jsObj = { attr1: "value1", attr2: 10 (一個數字), attr3: true(一個boolean值), attr4: function(){...} (一個函數) };

最重要的是, 如同在c/C++ 中的類/結構體 同樣 , js的對象 的屬性名 是能夠 不用 雙引號 來 闊起來的!! 而JSON "對象"的屬性 是要 用 雙引號闊起來的, 必須是雙引號, 單引號來闊起來都不行!!

  1. js的內置對象?
    js是有一些內置對象的, 如:Array, Date, String. 功能強大, 使用簡單, "可是在處理一些複雜的邏輯時, 內置對象就顯得無能爲力了, 就須要 用戶本身定義 對象了.
    內置對象的使用 是: 若是是類方法或 屬性, 直接使用 類名來 reference: 如: Array.staticAttr? 若是是類的實例的 方法 , 就要 先實例化 建立實例對象, 而後再使用 實例方法.
    能夠認爲, 這些內置對象, 系統已經給咱們定義好了的, 屬性和方法都寫好了的, 用不着咱們再去寫了, 你也能夠 本身 寫一個 同名的 Array, Date類, 若是確實有必要的話!!

  2. JSON 是js的內置對象, 意思就是 js object notation,(js 對象標記). 能夠認爲 JSON 是一種js的數據類型. 如Array 生成返回的是一個 數組! 實際上 JSON 表現是一種 字符串的形式, 不是對象的形式? 準確的說法是: JSON string:

JSON.stringify 看他的名字就知道了, 它說的是 stringify, "字符串化" == 即: 將js對象 字符串化, 就是將js對象 轉換成 json格式的 "字符串".

parse: 是動詞, 不是parser , 是解析 json格式的 "字符串", 將 jsonStr -> jsObj.

那麼js和JSON 之間的相互轉換是經過 兩個函數來實現的:

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?

vim的列 爲何是一個範圍?不是一個肯定的數字?

你只看前面那個數字, 前面那個數字, 是當前光標所在的位置!(至於爲何是一個範圍, 還不知道?)

eval和val的區別?

http://www.cnblogs.com/wangjunqiao/p/5718466.html , 說: JSON.parse(jsonStr)會解析 字符串 格式, 若是格式不正確, 即key, val沒有用 雙引號括起來, 等等語法錯誤, 會提示解析錯誤. 可是eval(...) 會解析其中 參數 的 任意 字符串, 不會進行格式 檢查, 並且, 最可怕的是, 它會去 執行字符串, 即, 若是字符串是能夠執行的js腳本 , 則 這個腳本將會執行! 因此, 若是惡意用戶, 向網頁中注入 惡意代碼 腳本,(也有多是 開發者, 那麼你訪問 網頁的 時候, 就會着了...




相關文章
相關標籤/搜索