1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <!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 person = {
- // name:'zs',
- // age: 18
- // }
- // function deepClone(obj){
- // var tmp = {};
- // for(key in obj) {
- // tmp[key] = obj[key]
- // }
- // return tmp
- // }
- // console.log(deepClone(person))
- // var a = deepClone(person)
- // a.name = 'lisi'
- // console.log(a)
- // console.log(person)
- var person = {
- name:'zs',
- age:18,
- school:{
- address:'harbin',
- num: 10000
- }
- }
- // var a = deepClone(person)
- // a.school.address = 'shenyang'
- // a.name = 'lisi'
- // 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.address = 'shenyang '
- console.log(a)
- console.log(person)
- </script>
- </body>
- </html>
|