| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <!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>
 |