注册网站排名公司红豆影视传媒有限公司

张小明 2026/1/10 0:20:27
注册网站排名公司,红豆影视传媒有限公司,上海市建设工程信息网,wordpress模板颓废一、构造函数#xff08;完整代码示例#xff09;构造函数就是一个普通函数#xff0c;创建方式和普通函数没有区别#xff0c;不同的是首字母习惯上大写。构造函数和普通函数的区别就是调用方式不同 普通函数直接调用fun()#xff0c;构造函数需要使用new关键字来调用完整代码示例构造函数就是一个普通函数创建方式和普通函数没有区别不同的是首字母习惯上大写。构造函数和普通函数的区别就是调用方式不同 普通函数直接调用fun()构造函数需要使用new关键字来调用var pernew Person();1. 构造函数与普通函数的区别调用方式// 1. 普通函数首字母小写直接调用 function sayHello() { console.log(普通函数调用); this.name 普通函数; // 非严格模式下this指向window } // 普通调用 sayHello(); // 输出普通函数调用 console.log(window.name); // 输出普通函数验证this指向 // 2. 构造函数首字母大写new调用 function Person(name, age) { // 执行流程 // 1. 隐式创建新对象2. this指向新对象3. 执行代码4. 返回新对象 this.name name; this.age age; this.sayHi function() { console.log(我是${this.name}今年${this.age}岁); }; } // 构造函数调用创建实例 const per1 new Person(张三, 20); const per2 new Person(李四, 22); console.log(per1); // 输出Person { name: 张三, age: 20, sayHi: [Function] } per1.sayHi(); // 输出我是张三今年20岁 per2.sayHi(); // 输出我是李四今年22岁 // 3. instanceof检查实例归属 console.log(per1 instanceof Person); // 输出trueper1是Person的实例 console.log(per1 instanceof Object); // 输出true所有对象都是Object的后代 console.log(per1 instanceof Array); // 输出false验证非Array实例构造函数的执行流程1、立刻创建一个新的对象2、将新建的对象设置为函数中的this在构造函数中可以使用this来引用新建的对象3、逐行执行构造函数中的代码4、将新创建的对象作为返回值返回使用同一个构造函数创建的对象属于同一类对象我们也将一个构造函数称为一个类。通过一个构造函数创建的对象称为该类的实例也称为该构造函数的实例。使用instanceof可以检查一个对象是否是一个类的实例所有对象都是Object的后代二、原型prototype完整代码示例我们所创建的每一个函数解析器都会向函数中添加一个属性prototype这个属性对应着一个对象叫原型对象每个函数都有都指向一个不同的原型对象。如果函数作为普通函数调用prototype没有任何作用如果函数以构造函数形式调用时它所创建的对象中都会有一个隐含的属性__proto__指向该构造函数的原型对象我们可以通过__proto__访问该属性。原型对象就相当于一个公共区域所有同一个类的实例都可以访问到这个原型对象。我们可以将对象中共有的内容统一设置到原型对象中。这样不用分别为每一个实例对象添加也不会影响到全局作用域就可以使每个对象中都有这些属性和方法。1. 原型对象的基本使用公共属性 / 方法// 构造函数 function Student(name, score) { this.name name; // 实例自身属性 this.score score; } // 原型对象添加公共方法所有实例共享 Student.prototype.sayScore function() { console.log(${this.name}的成绩是${this.score}分); }; // 原型对象添加公共属性 Student.prototype.school 第一中学; // 创建实例 const stu1 new Student(小明, 90); const stu2 new Student(小红, 85); // 访问实例自身属性 console.log(stu1.name); // 输出小明自身属性 // 访问原型对象的属性/方法 console.log(stu1.school); // 输出第一中学原型属性 stu2.sayScore(); // 输出小红的成绩是85分原型方法 // 验证所有实例共享原型方法内存复用 console.log(stu1.sayScore stu2.sayScore); // 输出true2. 属性查找规则自身 → 原型 → 原型的原型当我们访问对象的一个属性或方法时它会先在对象自身中寻找有直接使用如果没有会去原型对象中找如果找到则直接使用// 接上面的Student构造函数 // 1. 自身有属性优先使用自身 stu1.score 95; console.log(stu1.score); // 输出95自身覆盖原型 // 2. 自身无找原型原型无找原型的原型直到Object原型null console.log(stu1.toString()); // 输出[object Object]来自Object.prototype console.log(stu1.abc); // 输出undefined最终未找到3. in 与 hasOwnProperty 区别使用in检查对象中是否含有某个属性时如果对象中没有但是原型对象中有也会返回true使用对象的hasOwnProperty(name)检查对象自身中是否含有该属性只有对象自身中有时才会返回true。// 接上面的stu1实例 // 1. in自身或原型有则返回true console.log(name in stu1); // 输出true自身有 console.log(school in stu1); // 输出true原型有 console.log(toString in stu1); // 输出trueObject原型有 // 2. hasOwnProperty仅自身有则返回true console.log(stu1.hasOwnProperty(name)); // 输出true自身有 console.log(stu1.hasOwnProperty(school)); // 输出false原型有 console.log(stu1.hasOwnProperty(toString)); // 输出falseObject原型有4. 原型链示例多层原型查找// 自定义构造函数 function Animal(type) { this.type type; } // Animal原型添加方法 Animal.prototype.eat function() { console.log(${this.type}会吃东西); }; // Dog继承Animal简化版仅演示原型链 function Dog(name) { this.name name; } // 将Dog的原型指向Animal的实例形成原型链 Dog.prototype new Animal(狗); // 创建Dog实例 const dog1 new Dog(旺财); // 原型链查找 // dog1自身 → Dog.prototypeAnimal实例 → Animal.prototype → Object.prototype → null console.log(dog1.name); // 自身旺财 dog1.eat(); // Animal.prototype狗会吃东西 console.log(dog1.toString()); // Object.prototype[object Object] console.log(dog1.xxx); // 输出undefined最终未找到三、完整整合示例构造函数 原型 原型链原型对象也是对象所以它也有原型。当我们使用一个对象的属性或方法时会先在自身中寻找。自身中如果有直接使用如果没有则去原型对象中找如果原型对象中有则直接使用如果没有则去原型对象中的原型去找直到找到Object对象的原型。Object对象的原型没有原型对应的值为null如果还没有找到则返回undefined。// 1. 定义构造函数 function Car(brand, color) { // 实例自身属性 this.brand brand; this.color color; } // 2. 原型添加公共方法所有Car实例共享 Car.prototype.run function() { console.log(${this.color}的${this.brand}正在行驶); }; // 原型添加公共属性 Car.prototype.wheels 4; // 3. 创建实例 const car1 new Car(宝马, 白色); const car2 new Car(奔驰, 黑色); // 4. 访问属性/方法 console.log(car1.brand); // 自身白色 console.log(car1.wheels); // 原型4 car2.run(); // 原型方法黑色的奔驰正在行驶 // 5. 检查属性归属 console.log(wheels in car1); // true原型有 console.log(car1.hasOwnProperty(wheels)); // false自身无 console.log(car1.hasOwnProperty(brand)); // true自身有 // 6. 原型链验证 console.log(car1.__proto__ Car.prototype); // true实例的__proto__指向构造函数原型 console.log(Car.prototype.__proto__ Object.prototype); // true原型的原型指向Object原型 console.log(Object.prototype.__proto__); // nullObject原型无原型四、核心总结构造函数通过new调用自动创建 / 返回对象this指向实例原型prototype是构造函数的属性存储实例共享的属性 / 方法减少内存占用属性查找遵循「自身 → 原型 → 原型链」规则直到Object.prototype.__proto__nullin检查整个原型链hasOwnProperty仅检查实例自身。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做免费看电影的网站不违法吗wordpress 网页很慢

摘要 随着社会对动物福利的关注度不断提升,动物领养平台的需求日益增长。传统的线下领养模式存在信息不对称、流程繁琐等问题,亟需一种高效、透明的线上解决方案。基于此背景,本研究设计并实现了一个基于Java Web的动物领养平台系统&#xff…

张小明 2025/12/28 22:02:53 网站建设

北京网站seo推广excel小程序商店下载

在远程办公日益普及的今天,如何安全高效地访问企业内部资源成为许多企业和个人面临的挑战。Docker EasyConnect通过容器化技术,将复杂的网络连接配置过程简化为几个简单命令,让你在5分钟内就能搭建专属的远程连接环境。无论你是需要居家办公的…

张小明 2025/12/27 18:25:08 网站建设

网站建设模板源码特效淘宝卖家 打电话 做网站

第一章:AI模型容器化部署概述随着人工智能技术的广泛应用,如何高效、稳定地将训练好的AI模型部署到生产环境成为关键挑战。容器化技术凭借其轻量、可移植和环境隔离的特性,成为AI模型部署的理想选择。通过将模型、依赖库、运行时环境打包进容…

张小明 2025/12/27 18:25:10 网站建设

收录网站是什么意思南昌做网站哪家专业

MPV播放器软件兼容性问题解决方案与修复指南 【免费下载链接】mpv 🎥 Command line video player 项目地址: https://gitcode.com/GitHub_Trending/mp/mpv 软件兼容性问题在跨平台应用开发中尤为常见,本文针对MPV播放器在不同操作系统环境下遇到的…

张小明 2025/12/27 18:25:09 网站建设

传媒网站源码带手机oa软件有哪些公司

一、企业业务痛点您的企业是否曾面临这样的困境?企业产品品类繁多,单个产品的参数常达数十上百个,类型各异(部分为数字类型,部分为文字类型),且参数重要性存在差异(例如发电机的 &qu…

张小明 2026/1/5 10:36:39 网站建设

企业外部网站建设荆州市住房和城乡建设厅官方网站

你是否曾经在Wallpaper Engine中看到令人惊艳的动态壁纸,想要提取其中的精美素材用于个人创作,却被封闭的PKG格式阻挡了脚步?RePKG正是为解决这一痛点而生,它通过逆向工程分析技术打开了Wallpaper Engine的资源访问通道&#xff0…

张小明 2026/1/3 14:34:40 网站建设