原型和原型链的理解

Posted 李猫er

tags:

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

谈谈你对 JS 原型和原型链的理解?

候选人:JS 原型是指为其它对象提供共享属性访问的对象。在创建对象时,每个对象都包含一个隐式引用指向它的原型对象或者 null。

原型也是对象,因此它也有自己的原型。这样构成一个原型链。

原型链有什么作用?

候选人:在访问一个对象的属性时,实际上是在查询原型链。这个对象是原型链的第一个元素,先检查它是否包含属性名,如果包含则返回属性值,否则检查原型链上的第二个元素,以此类推。

那如何实现原型继承呢?

候选人:有两种方式。一种是通过 Object.create 或者 Object.setPrototypeOf 显式继承另一个对象,将它设置为原型。

另一种是通过 constructor 构造函数,在使用 new 关键字实例化时,会自动继承 constructor 的 prototype 对象,作为实例的原型。

在 ES2015 中提供了 class 的风格,背后跟 constructor 工作方式一样,写起来更内聚一些。

ConstructorB 如何继承 ConstructorA ?

候选人:JS 里的继承,是对象跟对象之间的继承。constructor 的主要用途是初始化对象的属性。

因此,两个 Constructor 之间的继承,需要分开两个步骤。

第一步是,编写新的 constructor,将两个 constructor 通过 call/apply 的方式,合并

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

原型和原型链的理解

面向对象(2 )构造函数 原型 原型链的理解

关于javascript中原型和原型链的理解

js原型链和继承的理解

原型和原型链的理解和使用

js原型和原型链的简单理解