理解JavaScript中的原型和原型链(二)
之前关于原型和原型链的笔记现在看来理解还是浮于表面,于是新开一章。
通俗易懂的介绍下原型和原型链
刚毕业的小王没有自己的房子,但是可以住父母的房子,父母就可以看作是小王的原型,父母的爸爸妈妈也就是爷爷奶奶也有自己的房子(原型)。自己、父母、爷爷奶奶这一条链条就是原型链。
原型
面试题:什么是原型
每个对象在其内部初始化拥有的一个属性,就是原型(prototype)。
对象以其原型为模板,从原型继承方法和属性,这些属性和方法定义在对象的构造器函数的 prototype 属性上,而非对象实例本身
ps:也有例外,看下面的代码
1 |
|
prototype 和 __proto__区别
- prototype是函数的属性,
__proto__
是对象的,除了字符串、数字、true、false、null和undefined外,JavaScript中的其他值都是对象,所以函数两个都有 - 每个变量都会有一个__proto__属性,表示的是隐式原型。一个对象的隐式原型指向的是构造该对象的构造函数的原型。例子如下:
1 |
|
对象自身的方法和原型上的方法冲突了?
引用文章开头的例子,自己有房子了当然不需要住在父母的房子里了呀。
1 |
|
原型链
原型链:是指一个对象继承的所有对象,称为这个对象的原型链
理解JavaScript中的原型和原型链(二)
https://xypecho.github.io/2021/02/03/理解JavaScript中的原型和原型链-二/