巢湖网站设计软件公司宣传册设计样本

张小明 2026/3/2 18:17:17
巢湖网站设计,软件公司宣传册设计样本,个人简历电子版免费,创意网店名一、先理清核心定义#xff1a;谁拥有 prototype 和 __proto__#xff1f;特性prototypeproto#xff08;隐式原型#xff09;归属只有函数拥有#xff08;所有函数默认自带#xff09;只有对象拥有#xff08;所有对象#xff0c;包括函数#xff09;本质普通对象谁拥有prototype和__proto__特性prototypeproto隐式原型归属只有函数拥有所有函数默认自带只有对象拥有所有对象包括函数本质普通对象Function.prototype 除外普通对象作用存储构造函数的「公共属性 / 方法」供实例共享指向当前对象的「原型对象」构建原型链是否可直接修改可手动修改常用非标准属性ES6 后推荐用 Object.getPrototypeOf不建议直接修改关键结论当函数作为构造函数使用时prototype才有用普通函数的prototype无意义。所有对象包括函数对象、实例对象的__proto__最终都会指向某个构造函数的prototype。二、prototype详解构造函数的「公共仓库」1. 基础用法给构造函数挂载公共方法 / 属性// 1. 构造函数函数拥有prototype function Person(name) { this.name name; // 实例自身属性每个实例独立 } // 2. 给Person的prototype挂载公共方法所有实例共享 Person.prototype.sayHi function() { console.log(我是${this.name}); }; Person.prototype.age 18; // 公共属性 // 3. 创建实例 const p1 new Person(张三); const p2 new Person(李四); // 验证所有实例共享prototype中的内容 console.log(p1.age); // 18从Person.prototype获取 console.log(p2.age); // 18 console.log(p1.sayHi p2.sayHi); // true内存复用只有一份方法 // 验证prototype的归属只有函数有 console.log(Person.hasOwnProperty(prototype)); // true函数有prototype console.log(p1.hasOwnProperty(prototype)); // false实例对象无prototype2.prototype的隐藏属性constructor每个函数的prototype都自带一个constructor属性指向原构造函数可理解为「原型的反向指针」。// 接上面的代码 console.log(Person.prototype.constructor Person); // true // 实例可通过__proto__访问constructor确认自己的构造函数 console.log(p1.__proto__.constructor Person); // true console.log(p1.constructor Person); // true自动沿原型链查找 // 注意如果手动覆盖prototype会丢失constructor需手动恢复 Person.prototype { // 手动覆盖后constructor指向Object而非Person sayHello: function() { console.log(覆盖原型); } }; const p3 new Person(王五); console.log(p3.constructor Person); // false console.log(p3.constructor Object); // true // 修复constructor Person.prototype.constructor Person; console.log(p3.constructor Person); // true三、__proto__详解对象的「原型指针」1. 基础逻辑实例的__proto__指向构造函数的prototype当用new 构造函数()创建实例时JS 会自动给实例添加__proto__属性指向构造函数的prototypefunction Cat(name) { this.name name; } Cat.prototype.color orange; const cat1 new Cat(橘猫); // 核心关联实例.__proto__ 构造函数.prototype console.log(cat1.__proto__ Cat.prototype); // true // 实例访问color时自身没有 → 沿__proto__找Cat.prototype → 找到color console.log(cat1.color); // orange2. 所有对象都有__proto__包括函数对象函数本身也是对象所以函数也有__proto__指向Function.prototype所有函数的原型// 函数的__proto__指向Function.prototype console.log(Cat.__proto__ Function.prototype); // true console.log(Function.__proto__ Function.prototype); // true特殊Function自身的__proto__指向自己的prototype // Object是函数它的__proto__也指向Function.prototype console.log(Object.__proto__ Function.prototype); // true // 普通对象的__proto__指向Object.prototype const obj {}; console.log(obj.__proto__ Object.prototype); // true四、原型链prototype和__proto__的联动原型链的本质是对象通过__proto__逐级指向父级构造函数的prototype直到Object.prototype.__proto__ null。可视化原型链以cat1为例cat1实例 ↓ __proto__ Cat.prototype原型对象 ↓ __proto__ Object.prototype顶级原型 ↓ __proto__ null原型链终点代码验证原型链查找规则// 接上面的Cat示例 // 1. 查找cat1.toString()自身没有 → __proto__找Cat.prototype没有→ __proto__找Object.prototype有 console.log(cat1.toString()); // [object Object]来自Object.prototype // 2. 验证原型链终点 console.log(Cat.prototype.__proto__ Object.prototype); // true console.log(Object.prototype.__proto__); // null // 3. 不存在的属性遍历完原型链返回undefined console.log(cat1.abc); // undefinedcat1 → Cat.prototype → Object.prototype → null均无abc五、常见避坑点 最佳实践1. 不要直接修改__proto____proto__是 ES6 之前的非标准属性虽然主流浏览器支持但修改性能差会破坏原型链优化。推荐用标准 APIconst obj {}; // 替代 __proto__ 读取 console.log(Object.getPrototypeOf(obj) Object.prototype); // true // 替代 __proto__ 修改不推荐频繁修改 const protoObj { x: 10 }; Object.setPrototypeOf(obj, protoObj); console.log(obj.x); // 102. 区分「实例属性」和「原型属性」function Dog(name) { this.name name; } Dog.prototype.age 2; const dog1 new Dog(旺财); dog1.age 3; // 给实例自身添加age覆盖原型的age console.log(dog1.age); // 3自身属性优先 // 删除自身属性后恢复读取原型属性 delete dog1.age; console.log(dog1.age); // 2从原型读取3.in与hasOwnProperty的区别原型链影响// 接上面的Dog示例 console.log(age in dog1); // truein检查整个原型链 console.log(dog1.hasOwnProperty(age)); // false自身无age console.log(dog1.hasOwnProperty(name)); // true自身有name六、核心总结prototype函数的「公共仓库」只有构造函数的prototype有实际意义存储实例共享的属性 / 方法自带constructor指向原函数。__proto__对象的「原型指针」所有对象都有指向创建该对象的构造函数的prototype是原型链的核心链路。联动关系实例.__proto__ 构造函数.prototype原型链通过__proto__串联多个prototype直到null。查找规则访问对象属性 / 方法时先查自身 → 沿__proto__查原型 → 直到Object.prototype→ 仍无则返回undefined。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

友汇网网站建设免费建站分类信息网

文章目录一、简介二、Postman安装和插件newman2.1 Postman安装2.1.1 Postman安装方式2.1.2 Postman注意事项2.2 安装Postman插件newman2.2.1 安装node.js2.2.2 安装newman (前提:确保 npm -v 验证通过)2.2.2.1 npm install报错ERR code ETIMEDOUT的解决办法2.2.2.2 …

张小明 2026/1/12 2:48:54 网站建设

php建站平台apicloud影视源码

Linux系统:磁盘使用查询与软件安装管理指南 在Linux系统中,掌握磁盘使用情况查询和软件安装管理是非常重要的技能。下面将详细介绍相关的命令和操作方法。 磁盘使用情况查询 在查看目录的磁盘使用情况时, du 命令非常实用。如果只想知道一个目录总共占用的空间,不关心…

张小明 2026/1/12 2:44:50 网站建设

网站在线开发搭建一个网站

方案背景在化工、电镀、冶金等工业领域中,酸雾净化系统是保障生产环境安全、控制污染物排放的重要环保装备,可对生产中产生的硫酸雾、盐酸雾、硝酸雾等各类酸性废气进行吸附、中和处理,直接关系到企业环保排放达标情况与生产合规性。某有色金…

张小明 2026/1/12 2:42:48 网站建设

网站界面设计需求短视频推广的优势

从零开始:LD2410毫米波雷达在智能家居中的实战应用 【免费下载链接】ld2410 An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. 项目地址: https://gitcode.com/gh_mirrors/ld/ld2410 想要为你的智能家居项目添加精准的人体存在检测功能吗…

张小明 2026/1/12 2:40:45 网站建设

做视频网站需要什么模板网站的劣势

在印刷机或食品包装机中,塑料薄膜或纸张历经放卷、印刷、收卷等过程,张力必须保持恒定。张力过大,薄膜就如不堪重负的细弦,会被扯断,从而中断生产、浪费原料;张力过小,薄膜则似软塌的布&#xf…

张小明 2026/1/12 2:38:39 网站建设