123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <!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,
- friend: {
- name: 'lisi'
- }
- }
- /* 封装深克隆的方法 */
- function deepClone(data) {
- /* 定义一个空对象 用于接收深克隆后的结果 */
- var tmp = {}
- // if(Array.isArray(data)){
- // tmp = []
- // } else {
- // tmp = {}
- // }
- tmp = Array.isArray(data) ? [] : {}
- /* 循环对象里面的每一项 遍历对象下面的属性 */
- for(key in data){
- /* 判断当前对象下面的属性是基本数据类型 还是 引用数据类型 */
- if(typeof (data[key]) == 'object'){
- /* 如果是引用数据类型 再次调用函数本身 */
- tmp[key] = deepClone(data[key])
- } else {
- /* 如果是基本数据类型 可以直接赋值 */
- tmp[key] = data[key]
- }
- }
- return tmp
- }
- var a = deepClone(person)
- a.friend.name = 'xiaohong'
- console.log(person)
- console.log(a)
- </script>
- </body>
- </html>
|