题目一
面试中,我经常会考察如何实现原型继承,再下一步才是考察原型链,一般我会写出下面的代码,然后让大家绘制原型链
class A {}
class B extends A {}
const b = new B();
面对这个题,我们先来绘制b和B的原型链,这里面涉及到三个对象分别是b
,B
和B.prototype
,相信大部分同学能够画清楚这几个的关系,由于是面试中只有笔和纸,又要清晰快速,所以我们可以像下面这样画,箭头代表关系,箭头上面的字代表属性名字
上面包括__proto__
,constructor
和prototype
三个部分,能画出来上面的只能算是不及格,接下来我们在把A的部分加进去
接下来我们把Function加进去,这一步是大家比较容易忽略的,Function比较特殊的地方就是Function.__proto__
指向自己的Function.prototype
,图中红色的线
最后再把Object加进去,我们的原型链就大工告成了,可以大家可以慢慢消化一下(^▽^)