原型与原型链
1.原型:
每当一个构造函数被创建的时候,系统就会自动的分配,一个对象,该对象的作用就是为了实现对象的共享方法。原型其实就是一个对象,存在内存中,原型可以给构造函数实列化(new)对象提供方法。
访问对象的原型:
构造函数.prototype(构造函数的原型)
实例化对象.__proto__(实例化对象访问原型)
1 function Person(name,age,gender){ 2 this.name=name; 3 this.age=age; 4 this.gender=gender; 5 } 6 7 //构造函数原型中创建一个方法 8 Person.prototype.sayHi=function(){ 9 console.log('hi~'); 10 } 11 12 var person = new Person('Tony',12,'boy');//实例化函数 13 console.log(person.sayHi);//调用方法 14 15 var person1=new Person('Anny',12,'girl'); 16 console.log(person1.sayHi); 17 //两个实例化后的对象指向同一个方法 18 console.log(person.sayHi==person1.sayHi);//true 19 //构造函数的原型与实例化后的原型指向相同 20 console.log(Person.prototype===person.__proto__)//true
两个原型对象的关系如图:
2.原型链
在内存中,存在多个原型对象,都存在着链式关系
function Person(){}//创建构造函数 let person=new Person();// 实例化对象 console.log(Person.prototype==person.__proto__);//true console.log(Object.prototype.__proto__);//null //原型对象也是另一个构造函数通过new实例化得到的 console.log(person.__proto__.__proto__);//object console.log(person.__proto__.__proto__.__proto__);//null var obj=new Object(); console.log(obj);
该关系如图所示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类