写在前面
坚持,记笔记 😀, 加油!
一、理解原型
无论何时,只要创建一个函数,这个函数都会创建一个prototype
属性,指向原型对象,包括应该由特定引用类型的实例共享的属性和方法。
构造函数有一个prototype
属性,指向其原型对象,而原型对象会自动获得一个constructor
属性,指向这个构造函数,也就是说二者循环引用
当调用构造函数创建一个实例时,这个实例内部有一个[[Prototype]]
会指向构造函数的原型对象
而每个实例对象上会暴露__proto__
属性,可以通过该属性访问对象的原型
二、原型链
重温一下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象有一个属性指回构造函数,而实例都包含一个内部指针指向原型对象。那么假如我们让原型对象等于另一个类型的实例,结果会怎样?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。这就是所谓的原型链的基本概念。
这里Child
没有使用默认的原型,而是将Parent
的实例作为它的原型。
在读取实例上的属性的时候,首先会在实例上搜索这个属性。如果没有找到,则会搜索实例的原型。还没有找到的话将会搜索原型的原型。
对属性和方法的搜索会一直持续到原型链的末端。
三、Last
分享壁纸😬,点个赞吧
如果有任何疑问欢迎在评论区友好交流呦 😆。
- 欢迎关注我呦 😆,我的 CSDN 博客主页。
- 还有我的Github@ienyh一起学习哈哈哈 👨💻