构造函数和实例对象和原型之间的关系
看下面的代码
<script>
function Person(sex,age){
this.sex=sex;
this.age=age;
}
// 通过原型添加方法
Person.prototype.sayHi=function(){
console.log('你好呀')
}
var per=new Person('男','20')
// 查看实例对象 我们发现:实例对象中有两个属性,age: "20"sex: "男"
// 这两个属性是通过构造函数来获取的。即__proto__
console.dir(per)
// 构造函数名称
//构造函数并没有sex和age这两个属性
console.dir(Person)
</script>
我们发现的现象
实例对象中有两个属性,age: "20"sex: "男"
这两个属性是通过构造函数来获取的。即__proto__
但是构造函数并没有sex和age这两个属性
我们知道:实例对象中有一个属性,即__proto__;
它也是对象,叫做原型。
但是它不是标准的原型,是浏览器使用的。
构造函数中有个属性,叫做prototype,它也是对象,叫做原型。
是标准的属性,是程序员使用的。
也就是说 __proto__或者说prototype都是原型对象
所以我们可以大胆的猜测:
console.log(per.__proto__==Person.prototype)
输出的是true
充分证明了我们说的 __proto__或者说prototype都是原型对象。
只是一个是浏览器使用一个是程序员使用
刚刚分析的是正确的哈
那么他们的构造器呢
console.log(per.__proto__.constructor==Person.prototype.constructor)
同样返回来的是true
构造函数和实例对象和原型之间的关系
var arr=new Array(10,20,30)
arr.join('40')
console.dir(arr);
同样的,我们在__proto__和prototype下都可以找到join方法
__proto__是浏览器使用的原型,prototype 我们程序员使用的原型
他们三者之间的关系是
1. 构造函数创建了实例实例对象
2. prototype这个属性指向的就是这个原型对象
3. constructor这个构造器指向自己构造函数
4. 实例对象本身没有eat方法,但是他有__proto__这个属性可以调用eat方法
原型对象中的方法可以被实例对象共享。[eat方法可以被共享]
5.构造函数创建了实例对象,有了构造函数也就有了原型对象
上面这几句话等价于下面的
1.构造函数可以实例化对象
2.构造函数中有一个属性叫做prototype,是构造函数的原型对象。
3.构造函数的原型对象{prototype}中有一个constructor构造器,
这个构造器是指向自己所在的原型对象所在的构造函数。
4.构造函数的原型对象prototype中的方法可以被实例对象直接访问的。
5.实例对象的原型的对象(__proto__)指向的是该构造函数的原型对象。
遇见问题,这是你成长的机会,如果你能够解决,这就是收获。
作者:晚来南风晚相识
出处:https://www.cnblogs.com/IwishIcould/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/IwishIcould/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

支付宝

微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY