eval:可以解析任何字符串变成js
parse:只能解析JSON形式的字符串变成JS (安全性要高一些)
parse():把字符串转成json
---字符串中的属性要严格的加上引号
stringify():把json转化成字符串
----会自动把双引号加上
还可以进行对象引用:
var a = { name:'hello' }; var b = a; b.name = 'hi' console.log(a.name)//hi
修改b的属性值的时候,a的属性值也会发生改变。
解决方法:用for in 就不会存在对象引用关系了
var a ={ name:'hello' }; var b ={}; for(var attr in a){ console.log(attr)//name console.log(a[attr])//hello b[attr] = a[attr]; } b.name = 'hi' console.log(a.name)//hello
另一种写法:
var a ={ name:'hello' }; var str = JSON.stringify(a); //得到一个新的对象 var b = JSON.parse(str); b.name = 'hi' console.log(a.name)
深层次的拷贝,可以利用递归(麻烦)
另一种解决方法
var a ={ name:{age:100} }; var str = JSON.stringify(a); //得到一个新的对象 var b = JSON.parse(str); b.name.age = 'hi' console.log(a.name.age)