[TOC]

## JSON是對象數據類型的特殊數據格式。
JSON不是一個單獨的數據類型,它只是一種特殊的數據格式->它是對象數據類型
```
var obj = {name:'ahhh',age:111};
```
JSON格式的對象相對于普通的對象來說,只是把屬性名用雙引號包起來的
```
var jsonObj = {"name":"ahhh","age":111};
```
## 方法
在window瀏覽器對象中,提供了一個叫做JSON的屬性,它里面提供了兩個方法
`window.JSON`
>IE6~7下window下沒有JSON屬性
### JSON.parse
把JSON格式的字符串轉換為JSON格式的對象
兼容IE6~7
```
eval("("+str+")"); //->不要問為什么,一定要記住使用eval的話,不要忘記手動的加一個小括號
```
### JSON.stringify
把JSON格式的對象轉換為JSON格式的字符串
```
console.log(JSON.stringify({name:'egg',age:111}))
```
會自動添加上`""`
```
{"name":"egg","age":111}
```
>**注意:** 該方法無法stringify函數類型的數據
#### stringify會無視值為undefined的屬性
```
console.log(JSON.stringify({user:undefined}))
```
輸出會為`{}`
但是一個屬性的值為`null`時,它是認的,會輸出`{"user":null}`
## 綁定數據
### 動態綁定
利用動態創建元素節點和把它追加到頁面中的方式實現數據綁定
```javascript
for(var i=0;i<ary.length;++i){
var cur = ary[i];
var oLi = document.createElement("li");
oLi.innerHTML = `<span>${i+4}</span>${cur.title}`;
oUl.appendChild(oLi);
}
```
優勢:把需要動態綁定的內容一個個追加到頁面中,對原來的元素沒有任何影響
弊端:每當創建一個li,我們就添加到頁面中,引發一次DOM回流,最后引發回流的次數過多,影響我們的性能。
### 字符串拼接
首先循環需要綁定的數據,然后把需要動態綁定的標簽以字符串的方式拼接到一起,拼接完成,統一的追加到頁面中->"字符串拼接綁定數據是我們以后工作中最常用的一種綁定數據的方式"
```
var str = "";
for(var i=0;i<ary.length;++i){
var cur = ary[i];
str += "<li>";
str += "<span>"+(i+4)+"</span>";
str+=curl.title;
str+="</li>";
}
oUl.innerHTML += str; //->oUl.innerHTML = oUl.innerHTML(把之前的三個li以字符串的方式獲取到)+str;(拼接完成的整體還是字符串,最后再把字符串統一的添加到頁面中,瀏覽器還需要把子串渲染成為對應的標簽)
```
弊端:我們把新拼接的字符串添加到oUl時,原有的三個li的鼠標滑過效果都消失了(原來標簽綁定的事件都消失了)
優勢:事先把內容拼接好了,最后統一添加到頁面當中,只引發一次回流。
## 注意事項
- 空白目錄
- window
- location
- history
- DOM
- 什么是DOM
- JS盒子模型
- 13個核心屬性
- DOM優化
- 回流與重繪
- 未整理
- 文檔碎片
- DOM映射機制
- DOM庫封裝
- 事件
- 功能組件
- table
- 圖片延遲加載
- 跑馬燈
- 回到頂部
- 選項卡
- 鼠標跟隨
- 放大鏡
- 搜索
- 多級菜單
- 拖拽
- 瀑布流
- 數據類型的核心操作原理
- 變量提升
- 閉包(scope)
- this
- 練習題
- 各種數據類型下的常用方法
- JSON
- 數組
- object
- oop
- 單例模式
- 高級單例模式
- JS中常用的內置類
- 基于面向對象創建數據值
- 原型和原型鏈
- 可枚舉和不可枚舉
- Object.create
- 繼承的六種方式
- ES6下一代js標準
- babel
- 箭頭函數
- 對象
- es6勉強筆記
- 流程控制
- switch
- Ajax
- eval和()括號表達式
- 異常信息捕獲
- 邏輯與和或以及前后自增
- JS中的異步編程思想
- 上云
- 優化技巧
- 跨域與JSONP
- 其它跨域相關問題
- console
- HTML、XHTML、XML
- jQuery
- zepto
- 方法重寫和方法重載
- 移動端
- 響應式布局開發基礎
- 項目一:創意簡歷