|
@@ -0,0 +1,86 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang="en">
|
|
|
+
|
|
|
+<head>
|
|
|
+ <meta charset="UTF-8">
|
|
|
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
+ <title>Document</title>
|
|
|
+</head>
|
|
|
+
|
|
|
+<body>
|
|
|
+ <script>
|
|
|
+ // var a = {
|
|
|
+ // age: 30
|
|
|
+ // }
|
|
|
+ // var str = JSON.stringify(a)
|
|
|
+ // var obj = JSON.parse(str)
|
|
|
+
|
|
|
+ // obj.age = 18
|
|
|
+ // console.log(a)
|
|
|
+ // console.log(obj)
|
|
|
+
|
|
|
+
|
|
|
+ // var person = {
|
|
|
+ // name: 'zs',
|
|
|
+ // age: 18
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+ // function deepClone(obj){
|
|
|
+ // var tmp = {}
|
|
|
+ // for(key in obj){
|
|
|
+ // tmp[key] = obj[key]
|
|
|
+ // }
|
|
|
+ // return tmp
|
|
|
+ // }
|
|
|
+
|
|
|
+ // var a = deepClone(person)
|
|
|
+ // a.name = 'lisi'
|
|
|
+ // console.log(person)
|
|
|
+ // console.log(a)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ var person = {
|
|
|
+ name: 'zs',
|
|
|
+ age: 18,
|
|
|
+ school: {
|
|
|
+ address: 'harbin',
|
|
|
+ num: 10000
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // var a = deepClone(person)
|
|
|
+ // a.school.num = 30000
|
|
|
+ // console.log(a)
|
|
|
+ // console.log(person)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* 封装深克隆的方法 */
|
|
|
+ function deepClone(obj) {
|
|
|
+ /* 定义一个空对象 接收深克隆后的结果 */
|
|
|
+ var tmp = {}
|
|
|
+ /* 循环对象里面的每一项 遍历对象下面的属性 */
|
|
|
+ for(key in obj){
|
|
|
+ /* 判断当前对象下面的属性是基本数据类型 还是 引用数据类型 */
|
|
|
+ if(typeof (obj[key]) == 'object'){
|
|
|
+ /* 如果是引用数据类型 再次调用函数本身 */
|
|
|
+ tmp[key] = deepClone(obj[key])
|
|
|
+ } else {
|
|
|
+ /* 如果是基本数据类型 可以直接赋值 */
|
|
|
+ tmp[key] = obj[key]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return tmp
|
|
|
+ }
|
|
|
+ var a = deepClone(person)
|
|
|
+ a.school.num = 200
|
|
|
+ console.log(a)
|
|
|
+ console.log(person)
|
|
|
+ </script>
|
|
|
+
|
|
|
+</body>
|
|
|
+
|
|
|
+</html>
|