全称:JavaScript Object Notation
JSON是一个字符串,常常用于网络传输数据的一种字符串格式
常见的字符串格式:
querystring查询字符串“name=karen&pwd=abc123&count=20"
template模板字符串`<div styLe="">666</div>`
JSON json字符串‘{"name " : " karen" , "its" : [ "heLLo" , "h5"]}’
JSON解析
parse()方法 把字符串解析为对象
反解析 stringify() 把对象解析为字符串
代码展示:
<script>
var re="JSON数据"
var obj=JSON.parse(re)
console.log(re,obj)
//"JSON数据" JSON数据
var obj={name:"karen"}
console.log(obj)
//{name:"karen"}
var str=JSON.stringify(obj)
console.log(str)
//{"name":"karen"}
</script>
推出对象深拷贝1(如果内部没有引用数据或者时间正则null等等数据时)
要求让obj2对象与obj={name : "karen"}长得一样,但是他们不是同一个对象,不能写obj2={name : "karen"}
<script>
var obj={name:"karen"}
//错误方法:
var obj2={}
obj2.name=obj.name
console.log(obj2,obj==obj2)//true
//指向的还是同一块内存空间
//正确方法:
var str=JSON.stringify(obj)//'{"name":"karen"}'
var obj2=JSON.parse(str)//{name:"karen"}
console.log(obj2,obj==obj2)//{name:"karen"} //false
</script>
对象深拷贝2
<script>
function deepcopy(data){
if(typeof(data)=="object"){
if(data.constructor==Date){
return new Date(data.getTime())
}
else if(data==null){
return null
}
else if(data.constructor==RegExp){
return new RegExp(data)
}
else if(data.constructor==Array){
var newArray=new Array()
for(var i=0;i<data.length;i++){
var temp=data[i]
newArray.push(arguments.callee(temp))
}
return newArray
}
else{
var newobj=new data.constructor() //new Object()
// Object.keys()
for (var key in data) {
newobj[key]=arguments.callee(data[key])
}
return newobj
}
}
else{
return data
}
}
</script>