我知道在原型继承的情况下,对象通过原型链链接在一起。继承是对其他活动对象(实例化)的“引用”。
其中,与基于类的继承一样,类(模板)是用来灌输继承的。任何子类实例化都“拥有”父对象的实例。
但是Javascript如何不使用ES6语法实现“经典”继承呢?使用ES6类语法,您所做的实际上是创建模板。在实例化对象时,每次都会创建父对象的一个单独的活动实例。这不是经典的继承吗?
发布于 2019-06-12 21:15:48
不,ES6 class语法不实现经典继承。类的方法仍然放在通过原型继承链接到实例的.prototype对象上。
也不存在“模板化”。属性不是事先声明的,实例的形状不是固定的。它们始终只是普通对象,它们的属性是在构造函数中创建的。
发布于 2019-06-12 21:11:08
是的,class旨在像其他语言中的类一样工作,因此它看起来像“经典继承”。在引擎盖下,它仍然是原型继承。
class Animal {}
class Human {}
const me = new Human;
Object.setPrototypeOf(me, Animal.prototype);
console.log(me instanceof Animal); // truehttps://stackoverflow.com/questions/56562947
复制相似问题