1、 请简述一下js原型链
原型链是Javascript实现类的底层原理,是一种继承机制。说到继承,这起源于
JAVA
和C++
的概念。上述两种语言的继承,本质上是一种拷贝行为
,将父类的方法拷贝给子类供其使用。但是JS中,子类的
.prototype对象
,通过原型链与父类的.prototype对象
形成一条查询管道
,如果子类中没有,通过管道返回到父类中寻找,一直回溯到Object.prototype
为止。比起拷贝继承,这种原型链形式,更加节省内存。另外由于javasctipt的面向对象
object oriented
OO
,实际上叫做object linked other object
OLOO
更为准确。
2、 在原型链上Object再往上是什么?
Object.prototype是原型链的终点了。
3、 __proto__
和prototype
分别指什么?哪种情况下__proto__
和prototype
的指向是同一个?
考察的问题:dunder和prototype的指向。通过例子来说明:
function Workshop(teacher){ this.teacher = teacher; } Workshop.prototype.ask = function (question){ console.log(this.teacher,question); } let deepJS = new Workshop("Kyle"); let reactJS = new Workshop("Suzy"); deepJS.ask("Is prototype a class?"); reactJS.ask("Isn't prototype ugly?");