js deep and shallow copy

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

</body>
<script>
  let obj = {
    name: 'cyy',
    age: "24",
    say: function () {
      console.log(this.name)
    }
  }

  function foreach(obj) {
    for (let key in obj) {
      alert(key)
    }
  }


//方法四 递归
  function clone(obj) {
    if (!obj && typeof obj !== 'object') {
      return;
    }
    var newObj = obj.constructor === Object ? {} : [];
    for (var key in obj) {
      newObj[key] = (obj[key] && typeof obj[key] === 'object') ? clone(obj[key]) : obj[key]; //递归
    }
    return newObj;
  }

  let zzz = clone(obj);


  // 方法3 浅拷贝
  function clone(object) {
    let _object = JSON.parse(JSON.stringify(obj))
    return _object
  }
  let uuu = clone(obj)
  console.log(uuu);
  //深拷贝
  let fz = Object.assign({}, obj);
  console.log(fz)



  // 作者:守候i
  // 链接:https://juejin.im/post/5aba6cff6fb9a028c14a7df1
  // 来源:掘金
  // 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  // 方法1
  // function clone(object) {
  //   let _obj = {};
  //   for (let key in object) {
  //     _obj[key] = object[key]
  //   }
  //   return _obj
  // }
  // let obj1 = clone(obj);
  // console.log(obj1)

  // // 方法2
  // function clone1(obj) {
  //   let _obj = Object.assign({}, object);
  //   return _obj;
  // }
  // let obj2 = clone1(obj);
</script>

</html>

</html>

https://juejin.im/post/5acc7e606fb9a028c67609f7

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325786195&siteId=291194637