ES6类:在超级方法中获取子类的正确名称

时间:2016-04-09 01:49:21

标签: javascript node.js class ecmascript-6 subclass

假设我有以下内容:

class ThingWithWheels {
    constructor( numWheels ) {
        this.numWheels = numWheels
    }
    toString() {
        return this.constructor.name;
    }
}
class Car extends ThingWithWheels {
    constructor( color ) {
        super(4);
        this.color = color;
    }
    toString() {
        return `${this.color} ${super.toString()}`;
    }
}

这是非常标准的面向对象编程。但是,在NodeJS v5.6.0中,如果我制作一辆红色汽车并拨打toString(),它将提供Red ThingWithWheels,而不是Red Car。当我调用超级方法时,它会将this视为ThingWithWheels而不是Car

  1. 这是为什么?
  2. 有没有办法在super方法名称正确的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

我刚刚在node.js 5.10.1中尝试了这个,它给了我" Red Car",所以它可能是5.6中的一个错误。