From a27184c9bbab067dae9dd99e90666a4cebd20929 Mon Sep 17 00:00:00 2001 From: LCJ-MinYa <1049468118@qq.com> Date: Wed, 4 Feb 2026 10:37:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8E=9F=E5=9E=8B=E5=92=8C=E5=8E=9F?= =?UTF-8?q?=E5=9E=8B=E9=93=BE=E7=90=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/absRes/prototype/1.webp | Bin 0 -> 22402 bytes src/views/demo/constructor/constructor.md | 143 ++++++++++++++++++++++ src/views/demo/constructor/index.vue | 18 +++ src/views/demo/prototype/prototype.md | 89 +++++++++++++- src/views/welcome/config.json | 38 +++--- 5 files changed, 268 insertions(+), 20 deletions(-) create mode 100644 public/absRes/prototype/1.webp create mode 100644 src/views/demo/constructor/constructor.md create mode 100644 src/views/demo/constructor/index.vue diff --git a/public/absRes/prototype/1.webp b/public/absRes/prototype/1.webp new file mode 100644 index 0000000000000000000000000000000000000000..b6a73001eb7ff09a5d2676c94243110f37596f82 GIT binary patch literal 22402 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 literal 0 HcmV?d00001 diff --git a/src/views/demo/constructor/constructor.md b/src/views/demo/constructor/constructor.md new file mode 100644 index 0000000..4bffd5c --- /dev/null +++ b/src/views/demo/constructor/constructor.md @@ -0,0 +1,143 @@ +## constructor 属性的详细解释 + +### 基本概念 + +**constructor** 是原型对象上的一个属性,它指向创建当前实例对象的构造函数。 + +### 各层级的 constructor 指向 + +``` +Person.prototype.constructor → Person +Function.prototype.constructor → Function +Object.prototype.constructor → Object +``` + +### 实际示例 + +```javascript +function Person(name) { + this.name = name; +} + +const p1 = new Person("张三"); + +// 验证 constructor 指向 +console.log(p1.constructor === Person); // true +console.log(Person.prototype.constructor === Person); // true +console.log(Function.prototype.constructor === Function); // true +console.log(Object.prototype.constructor === Object); // true +``` + +### 完整的 constructor 链式关系 + +``` +p1.constructor → Person.prototype.constructor → Person + +Person.constructor → Function.prototype.constructor → Function + +Function.constructor → Function.prototype.constructor → Function + (Function 的构造函数是它自身) + +Object.constructor → Function.prototype.constructor → Function + (Object 的构造函数是 Function) +``` + +### constructor 属性的工作原理 + +1. **原型继承机制**: + ```javascript + // 当访问 p1.constructor 时: + // 1. p1 对象本身没有 constructor 属性 + // 2. 沿着原型链查找:p1.__proto__ → Person.prototype + // 3. 在 Person.prototype 上找到 constructor 属性 + // 4. 该 constructor 指向 Person 函数 + ``` + +2. **constructor 的重写**: + ```javascript + function Person() {} + + // 默认情况下 + console.log(Person.prototype.constructor === Person); // true + + // 如果重写 prototype + Person.prototype = { + // 必须手动指定 constructor,否则会丢失 + constructor: Person, + sayHello: function() {} + }; + + // 如果不手动指定 constructor + Person.prototype = { + sayHello: function() {} + }; + console.log(Person.prototype.constructor === Person); // false + console.log(Person.prototype.constructor === Object); // true + ``` + +### 实际应用场景 + +1. **类型判断**: + ```javascript + const arr = []; + console.log(arr.constructor === Array); // true + + const obj = {}; + console.log(obj.constructor === Object); // true + + const num = 123; + console.log(num.constructor === Number); // true + ``` + +2. **实例创建**: + ```javascript + function Person(name) { + this.name = name; + } + + const p1 = new Person("张三"); + + // 通过 constructor 创建新实例 + const p2 = new p1.constructor("李四"); + console.log(p2.name); // "李四" + console.log(p2 instanceof Person); // true + ``` + +3. **原型链中的 constructor**: + ```javascript + function Animal() {} + function Dog() {} + + // 设置继承关系 + Dog.prototype = Object.create(Animal.prototype); + + // 修复 constructor 指向 + Dog.prototype.constructor = Dog; + + const dog = new Dog(); + console.log(dog.constructor === Dog); // true + console.log(dog instanceof Dog); // true + console.log(dog instanceof Animal); // true + ``` + +### 总结要点 + +1. **constructor 的位置**:在原型对象上,不在实例对象上 +2. **默认指向**:指向创建该原型对象的构造函数 +3. **可修改性**:constructor 属性可以被修改或覆盖 +4. **查找路径**:实例对象访问 constructor 时会沿着原型链查找 +5. **特殊案例**: + - `Function.prototype.constructor` 指向 `Function` + - `Object.prototype.constructor` 指向 `Object` + - 函数对象的构造函数是 `Function` + - 对象实例的构造函数是创建它的函数 + +### 内存示意图 +``` +p1 (实例) Person.prototype Function.prototype +┌─────────┐ ┌─────────────────┐ ┌─────────────────┐ +│ │ __proto__ → │ constructor │ → Person │ +│ ├──────────────→ │ │ │ constructor │ → Function +│ │ │ other props... │ │ │ +└─────────┘ └─────────────────┘ └─────────────────┘ +``` \ No newline at end of file diff --git a/src/views/demo/constructor/index.vue b/src/views/demo/constructor/index.vue new file mode 100644 index 0000000..99d9191 --- /dev/null +++ b/src/views/demo/constructor/index.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/views/demo/prototype/prototype.md b/src/views/demo/prototype/prototype.md index ac4e321..990fc59 100644 --- a/src/views/demo/prototype/prototype.md +++ b/src/views/demo/prototype/prototype.md @@ -1 +1,88 @@ -## 测试 \ No newline at end of file +## 代码前置条件 +```javascript +function Person(name) { + this.name = name; +} + +const p1 = new Person('p1'); +``` + +## constructor的详细理解 +[constructor的详细理解](/#/demo/constructor) + +## 原型链流转图 +```javascript +/** + * __proto__:原型引用 + * prototype:原型对象 + * 每个实例对象都有__proto__,它指向构造函数的prototype + */ + +// p1的完整原型链 +p1.__proto__ === Person.prototype +Person.prototype.__proto__ === Object.prototype +Object.prototype.__proto__ === null + +// Person的完整原型链 +Person.__proto__ === Function.prototype +Function.prototype.__proto__ === Object.prototype +Object.prototype.__proto__ === null + +// Function的完整原型链(注意:Function.__proto__与Function.prototype循环相等,这里是循环引用,差异点) +Function.__proto__ === Function.prototype +Function.prototype.__proto__ === Object.prototype +Object.prototype.__proto__ === null + +/** + * Object的完整原型链 + * Object.__proto__之所以等于Function.prototype,是因为Object本身是一个构造函数,所有的构造函数最终都指向Function.prototype + * 那为什么Function.prototype.__proto__指向Object.prototype,因为Function.prototype是对象,所有的对象最终都指向Obnect.prototype + * 如果这里用Function.__proto__,那它指向的就是Function.prototyp,因为Function是构造函数,所以符合上面所说的所有的构造函数最终都指向Function.prototype,这里就形成了循环引用 + */ +Object.__proto__ === Function.prototype +Function.prototype.__proto__ === Object.prototype +Object.prototype.__proto__ === null + +//Object.prototype的完整原型链 +Object.prototype.__proto__ === null +``` + +## 原型与原型链md关系图 +```markdown +p1 +├── __proto__ → Person.prototype + └── __proto__ → Object.prototype + └── __proto__ → null + +Person +├── __proto__ → Function.prototype + └── __proto__ → Object.prototype + └── __proto__ → null + +Function +├── __proto__ → Function.prototype + └── __proto__ → Object.prototype + └── __proto__ → null + +Object +├── __proto__ → Function.prototype + └── __proto__ → Object.prototype + └── __proto__ → null + +Object.prototype +└── __proto__ → null +``` + +## 原型图示例 +![操作示例](/absRes/prototype/1.webp) + +## 原理解释 +```javascript +// Person这里是一个构造函数,所有的构造函数都指向Function.prototype +Person.__proto__ === Function.prototype + +// Person.prototype这里是对象,所有的对象最终都指向Objec.prototype +Person.prototype.__proto__ === Object.prototype + +// 结论:这里可以把Person或者Person.prototype看成一个this指向,谁调用指向谁 +``` \ No newline at end of file diff --git a/src/views/welcome/config.json b/src/views/welcome/config.json index f1a1173..f1d3b5e 100644 --- a/src/views/welcome/config.json +++ b/src/views/welcome/config.json @@ -1,12 +1,12 @@ { - "totalNotes": 88, + "totalNotes": 92, "categories": 5, - "lastUpdated": "2026-01-29T03:29:36.051Z", - "weeklyAdded": 2, + "lastUpdated": "2026-02-03T02:46:03.140Z", + "weeklyAdded": 7, "categoryChartData": [ { "name": "demo", - "value": 77 + "value": 81 }, { "name": "python", @@ -27,34 +27,34 @@ ], "recentNotes": [ { - "path": "demo/formItemWithRangeFields.vue", - "title": "表单一个formItem中校验多个字段", + "path": "demo/canvasExample.vue", + "title": "canvas示例", "category": "demo", - "date": "2026-01-29" + "date": "2026-02-03" }, { - "path": "demo/eventListenner/index.vue", - "title": "事件监听器的一些总结", + "path": "demo/lodashExamples.vue", + "title": "Lodash 经典用法", "category": "demo", - "date": "2026-01-29" + "date": "2026-02-02" }, { - "path": "demo/elementPlusMessageBoxUse.vue", - "title": "element plus中使用messageBox技巧", + "path": "demo/code.vue", + "title": "面试手写题", "category": "demo", - "date": "2026-01-13" + "date": "2026-02-02" }, { - "path": "demo/scrollSnapType.vue", - "title": "滚动吸附效果", + "path": "demo/formItemWithRangeFields.vue", + "title": "表单一个formItem中校验多个字段", "category": "demo", - "date": "2025-12-31" + "date": "2026-02-02" }, { - "path": "demo/catchError/index.vue", - "title": "明明程序报错,但是控制台不打印错误的几种情况(别怀疑,一定是代码问题,而不是程序运行太久)", + "path": "demo/formChangeTrack.vue", + "title": "表单敏感字段变更追踪标记", "category": "demo", - "date": "2025-12-18" + "date": "2026-02-02" } ] } \ No newline at end of file