首页 > 编程知识 正文

原型链继承(原型对象和原型链)

时间:2023-05-03 06:06:26 阅读:82111 作者:4910

我们学习JavaScript的时候,大家都学过一些关于原型链的东西。 但是,在很多情况下,学习原型链会有很多疑问,是半吊子还是一头雾水。 很难清楚地知道原型链是什么。

prototype和contructor

prototype指向函数的原型对象。 这是只有函数才有的显式原型属性。 构造函数,其构造函数指向原型对象。

下面的示例考虑打印结果分别指向谁

函数foo

控制台日志(foo.prototype )。

控制台日志(foo.prototype.constructor )。

控制台日志(foo._ _ proto _ ) )

让我们来看看console.log (foo.prototype._ _ proto _ _ )每个构造函数与自己的原型对象之间的关系。

网络照片有侵害的话请告诉我

proto

每个对象都有_proto_。 这是一个隐式原型属性,是指创建对象的构造函数的原型。 因为js是一个没有类的概念,所以为了实现继承,可以通过用_proto_将对象与原型联系起来构成原型链,从而允许对象访问自己的属性。

函数和对象之间的关系

网络照片有侵害的话请告诉我

Foo、Function和Object都是函数,_proto_都是指Function.prototype。

原型对象之间的关系

网络照片有侵害的话请告诉我

所有这些_proto_都指向Object.prototype。 js原型链最终指向一个对象原型对象

_proto_原型链图

网络照片有侵害的话请告诉我

_proto_原型链图

网络照片有侵害的话请告诉我

如果看了上面的图表,应该就能很容易地理解js原型链的相关原理了。

总结

函数和对象是两个函数。 proto将对象和原型连接起来构成了原型链。 所有函数的proto都指向函数原型对象。 js的原型链最终指向Object原型对象(Object.prototype ) (在此排除空值)。 我想指出的是,如果xbdy函数直接更改属性,则函数的所有proto都指向函数原型对象,而在new中直接更改则不指向函数原型对象。

网络照片有侵害的话请告诉我

请参阅来源:

谢谢: https://juejin.im/post/6844903936365690894

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。