zsydgithub 2 жил өмнө
parent
commit
a0ff6cc881

+ 55 - 0
8_html5/7_json.html

@@ -0,0 +1,55 @@
+<!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
+    // }
+    // console.log(person)
+
+    // /* 将对象转化成字符串类型 */
+    // var str = JSON.stringify(person)
+    // console.log(str)
+    // /* 将字符串转化为对象 */
+    // var obj = JSON.parse(str)
+    // console.log(obj)
+
+
+    var obj1 = {
+      name:'zs',
+      age: 18
+    }
+
+    // var obj2 = obj1 
+    // obj1.age = 30
+    // console.log(obj2)
+    // console.log(obj1)
+
+    /* 
+      浅拷贝、浅克隆: 将一个变量复制给另一个变量  修改其中一个变量
+      原先的变量也随之改变(引用数据类型)
+      深拷贝、深克隆: 将一个变量复制给另一个变量  修改其中一个变量
+      原先的变量不跟随改变(基本数据类型)
+    */
+
+    var tmp = JSON.stringify(obj1) //转化为字符串
+    var obj2 = JSON.parse(tmp) //转化成对象
+    obj2.age = 30
+    console.log(obj1)
+    console.log(obj2)
+
+    /* 
+    实现深拷贝 可以通过JSON.stringfy()先转化成字符串
+    然后对字符串进行一个复制 在转化成对象
+    JSON.parse()
+    */
+  </script>
+</body>
+</html>

+ 70 - 0
8_html5/8_深拷贝.html

@@ -0,0 +1,70 @@
+<!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 = 'heida'
+    // 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 = 'heigongcheng'
+    console.log(a)
+    console.log(person)
+  </script>
+</body>
+
+</html>

+ 38 - 0
8_html5/9_深克隆2.html

@@ -0,0 +1,38 @@
+<!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>
+    function deepClone(data) {
+      var tmp = {}
+      if (typeof data == 'object') {
+        tmp = Array.isArray(data) ? [] : {}
+        // if(Array.isArray(data)){
+        //   tmp = []
+        // } else{
+        //   tmp = {}
+        // }
+
+        for(key in data){
+          if(typeof data =='object'){
+            tmp[key] = deepClone(data[key])
+          } else{
+            tmp[key] = data[key]
+          }
+        }
+      } else {
+        tmp = data
+      }
+      return tmp
+    }
+  </script>
+</body>
+
+</html>