[TOC]
![](https://box.kancloud.cn/22d6ed030cb3022bf2f7111ab9f9feba_276x153.png)
## 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
- 方法重写和方法重载
- 移动端
- 响应式布局开发基础
- 项目一:创意简历