我了解在原型继承的情况下,对象通过原型链链接在一起。继承是对其他一些活动对象(实例化)的“引用”。
与基于类的继承一样,通过类(模板)来灌输继承。任何子类实例化都“拥有”父对象的实例。
但是Javascript如何不使用ES6语法实现“经典”继承呢?使用ES6类语法,您要做的实际上是创建模板。并且在实例化对象时,每次都会创建一个单独的父实例。这不是古典继承吗?
答案 0 :(得分:3)
否,ES6 class
语法未实现经典继承。该类的方法仍放在通过原型继承链接到实例的.prototype
对象上。
任何一个都没有“模板”。事先不声明属性,实例的形状不固定。它们一直都是普通对象,它们的属性在构造函数中创建。
答案 1 :(得分:2)
是的,class
的行为类似于其他语言中的类,因此看起来像“经典继承”。在后台,它仍然是原型继承。
class Animal {}
class Human {}
const me = new Human;
Object.setPrototypeOf(me, Animal.prototype);
console.log(me instanceof Animal); // true