| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- </head>
- <body>
- <script>
- // 深拷贝 递归拷贝
- function deepClone(val) {
- // 如果传递过来的是一个基本数据类型 直接返回
- if (typeof val != "object" || val === null) {
- return val;
- } else {
- if (Array.isArray(val)) {
- let newArr = [];
- for (let i = 0; i < val.length; i++) {
- newArr[i] = deepClone(val[i]);
- }
- return newArr;
- } else {
- let newObj = {};
- for (let key in val) {
- newObj[key] = deepClone(val[key]);
- }
- return newObj;
- }
- }
- }
- let arr = [1, 2, ["a", "b"], 3, 4];
- let obj = {
- a: 1,
- b: 2,
- c: {
- x: 100,
- y: 200
- }
- }
- let obj2 = deepClone(obj);
- obj.c.x = 300;
- console.log(obj2);
- // let arr2 = deepClone(arr);
- // arr[0] = 100;
- // arr[2][0] = "hello";
- // console.log(arr2);
- </script>
- </body>
- </html>
|