! Hola,amigos。我有这个小类继承结构
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
class ColorPoint extends Point {
constructor(x, y, color) {
super(x, y);
this.color = color;
}
toString() {
return super.toString() + ' in ' + this.color;
}
}
let newObj = new ColorPoint(25, 8, 'green');
它编译为this jsfiddle
我以愚蠢的方式了解它在es6中是如何工作的。 但有人可以解释它在es5中如何运作。 以更简单的形式。
答案 0 :(得分:12)
super(…);
基本上是this = new ParentConstructor(…);
的糖。其中ParentConstructor
是扩展类,而this =
是this
关键字的初始化(好吧,鉴于这种禁止的语法,那里除了糖之外还有点多了它)。实际上,它会从ParentConstructor.prototype
继承正确的new.target.prototype
而不是new
。所以不,它在引擎盖下如何工作根本不能与ES5相比,这实际上是ES6类中的一个新功能(最终使我们能够正确地对内置类进行子类化)。