ES6 Class 语法不是给我们提供了 "classical" 继承吗?
Doesn't ES6 Class Syntax provide us with "classical" inheritance?
我了解在原型继承的情况下,对象通过原型链链接在一起。继承是对其他一些活动对象(实例化)的 "REFERENCE"。
在基于 class 的继承的情况下,classes(模板)用于灌输继承。任何子class实例化"POSSESSES"父对象的实例。
但是Javascript怎么没有用ES6语法实现"classical"继承呢?使用 ES6 class 语法,您所做的实际上是创建模板。在实例化一个对象时,每次都会创建一个单独的父实例。这不是class真正的继承吗?
是的,class
的目的是在其他语言中表现得像 类,因此它看起来像 "classical inheritance"。不过在幕后它仍然是原型继承。
class Animal {}
class Human {}
const me = new Human;
Object.setPrototypeOf(me, Animal.prototype);
console.log(me instanceof Animal); // true
不,ES6 class
语法不实现 classical 继承。 class 的方法仍然放置在通过原型继承链接到实例的 .prototype
对象上。
也没有 "templating" 进行。属性不预先声明,实例的形状不固定。它们一直都是普通对象,它们的属性是在构造函数中创建的。
我了解在原型继承的情况下,对象通过原型链链接在一起。继承是对其他一些活动对象(实例化)的 "REFERENCE"。
在基于 class 的继承的情况下,classes(模板)用于灌输继承。任何子class实例化"POSSESSES"父对象的实例。
但是Javascript怎么没有用ES6语法实现"classical"继承呢?使用 ES6 class 语法,您所做的实际上是创建模板。在实例化一个对象时,每次都会创建一个单独的父实例。这不是class真正的继承吗?
是的,class
的目的是在其他语言中表现得像 类,因此它看起来像 "classical inheritance"。不过在幕后它仍然是原型继承。
class Animal {}
class Human {}
const me = new Human;
Object.setPrototypeOf(me, Animal.prototype);
console.log(me instanceof Animal); // true
不,ES6 class
语法不实现 classical 继承。 class 的方法仍然放置在通过原型继承链接到实例的 .prototype
对象上。
也没有 "templating" 进行。属性不预先声明,实例的形状不固定。它们一直都是普通对象,它们的属性是在构造函数中创建的。