zheng 17 часов назад
Родитель
Сommit
b923ace2d1
1 измененных файлов с 72 добавлено и 0 удалено
  1. 72 0
      3_JavaScript/27.原型和原型链.html

+ 72 - 0
3_JavaScript/27.原型和原型链.html

@@ -0,0 +1,72 @@
+<!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>
+        // // 函数
+        // // 1.匿名函数
+        // let aa = function () {
+
+        // }
+        // aa()
+        // // 2.普通函数
+        // function aa() {
+
+        // }
+        // // 3.立即执行函数
+        // (function () {
+
+        // })()
+        // // 4.构造函数
+        // function Person() {
+
+        // }
+
+        /** 构造函数
+         * 1.首字母要大写
+         * 2.可以通过new进行调用
+         * 3.在构造函数中 this指向当前实例
+         * 4.在构造函数中 return无效
+         */
+        /**
+         * 构造函数中 属性
+         * 原型 方法
+         */
+        function Person(name, age) {
+            console.log("你好,人员信息")
+            console.log(this)
+            this.name = name;
+            this.age = age;
+        }
+        Person.prototype.say = function () {
+            console.log("你好")
+        }
+        let person = new Person('图图', 3)
+        console.log(person);
+        person.say();
+        console.log(person.__proto__ == Person.prototype);
+        console.log(Person.prototype.constructor == Person);
+        console.log(Object.getPrototypeOf(person) === Person.prototype);
+        /**
+         * 原型
+         * 1.所有的构造函数都自带了一个prototype属性(显性),该属性指向当前构造函数的原型
+         * 2.原型可以通过自带的constructor(隐性),指向当前原型的构造函数
+         * 3.构造函数可以通过new进行实例化 产生实例化对象
+         * 4.实例化对象可以通过_proto_属性 指向当前构造函数的原型 在上面查找想要的属性或方法
+         */
+        /**
+         * 原型链
+         * 当访问一个对象的属性或方法时,先在当前对象自身查找,如果没有,
+         * 通过_proto_方法去当前对象的原型上查找,如果,还是没有,去对象(Object.prototype)的原型上查找,
+         * 找不到返回undefined,原型链的终点是null。这条由_proto_串起的链就是原型链;
+         */
+    </script>
+</body>
+
+</html>