问答式理解javascript的原型及其原型链

Posted 且听风鸣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问答式理解javascript的原型及其原型链相关的知识,希望对你有一定的参考价值。

简言简语

1、什么是原型?
原型指的是javascript里面对象的prototype属性,称为原型对象,js原生对象都有prototype属性。

2、prototype是怎么来的?
在我们以函数式声明一个函数时,js引擎会为我们分配prototype这个属性,在js中所有的对象都继承自Object。

3、那Prototype里有什么?
我们刚声明函数的prototype里面有两个属性constructor和__proto__。
constructor指向函数本身,__proto__指向Object.prototype。

4、prototype是干什么的?
在JS中,实例可以共享prototype里面的属性,在我们需要给实列添加公用的属性或是方法时,就可以加在对象的prototype上。

5、那么__proto__又是什么呢?
__proto__只是一个属性,用来指向prototype。

6、__proto__是怎么指向prototype的?

所有的实例对象都遵循以下规则:
实例对象的__proto__指向其构造函数的原型对象,原型对象里面的__proto__指向Object.prototype,Object的原型对象的__proto__指向null。

7、那原型链是什么呢?
实例对象访问属性时,先在自己那找,没有话就去__proto__指向的原型对象中找,按照问题的方式自下而上,知道找到或是到null为止。这样的一个__proto__指向所形成的链就是原型链。

以上是关于问答式理解javascript的原型及其原型链的主要内容,如果未能解决你的问题,请参考以下文章

对Javascript 类原型链继承的理解

JavaScript继承基础讲解,原型链借用构造函数混合模式原型式继承寄生式继承寄生组合式继承

浅析js中的原型和原型链及其使用场景

原型原型对象的理解 及其原型链继承

JavaScript ES5类 原型 原型链 组合原型寄生式继承

JavaScript对象原型链继承闭包