fengchuanyu vor 1 Tag
Ursprung
Commit
eebdd1fa1d
3 geänderte Dateien mit 151 neuen und 0 gelöschten Zeilen
  1. 52 0
      8_ES6/20_ES5继承.html
  2. 45 0
      8_ES6/21_class类.html
  3. 54 0
      8_ES6/练习题4_深拷贝.html

+ 52 - 0
8_ES6/20_ES5继承.html

@@ -0,0 +1,52 @@
+<!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>
+        // let timer = new Date();
+        // console.log(timer.getFullYear());
+
+        // 创建构造函数
+        function Person(name,age){
+            // 初始化属性 一般都是写在构造函数中
+            this.type = "人";
+            // 保存构造函数传递参数
+            this.name = name;
+            this.age = age;
+        }
+        // 构造函数的方法一般写在原型对象中
+        Person.prototype.say = function(){
+            console.log(`我是${this.name},我今年${this.age}岁,我是一个人`);
+        }
+        // 通过new关键字创建一个实例对象
+        // let p1 = new Person("张三",18);
+        // console.log(p1.type);
+        // p1.say();
+
+
+        // 构造函数继承
+        function Student(name,age,school){
+            // 调用父类构造函数
+            Person.call(this,name,age);
+            // 初始化属性
+            this.school = school;
+        }
+        // 子类的方法
+        Student.prototype = new Person();
+        // 修复constructor指向问题
+        Student.prototype.constructor = Student;
+        Student.prototype.saySchool = function(){
+            console.log(`我是${this.name},我今年${this.age}岁,我是一个人,我去${this.school}上学`);
+        }
+
+        let s1 = new Student("李四",18,"清华大学");
+        // s1.say();
+        s1.saySchool();
+        console.log(s1.constructor);
+    </script>
+</body>
+</html>

+ 45 - 0
8_ES6/21_class类.html

@@ -0,0 +1,45 @@
+<!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>
+        // 定义一个类
+        class Person{
+            // 构造函数
+            constructor(name,age){
+                // 初始化属性
+                this.name = name;
+                this.age = age;
+            }
+             // 方法
+             say(){
+                console.log(`我是${this.name},我今年${this.age}岁`);
+             }
+        }
+        // let p1 = new Person("张三",18);
+        // p1.say();
+
+        // 类的继承
+        class Student extends Person{
+            constructor(name,age,school){
+                // 调用父类构造函数
+                super(name,age);
+                // 初始化属性
+                this.school = school;
+            }
+             // 方法
+             saySchool(){
+                console.log(`我是${this.name},我今年${this.age}岁,我是一个人,我去${this.school}上学`);
+             }
+        }
+
+        let s1 = new Student("李四",18,"清华大学");
+        s1.say();
+        s1.saySchool();
+    </script>
+</body>
+</html>

+ 54 - 0
8_ES6/练习题4_深拷贝.html

@@ -0,0 +1,54 @@
+<!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>