ECMAScript 6子类打印父项名称

时间:2016-01-06 01:13:14

标签: javascript ecmascript-6

当我做console.log(object)时,我希望看到对象类的名称。因此,子类具有其父级的名称似乎是出乎意料的。

"use strict";

class Parent {
  constructor () {
  }
}
class Child extends Parent {
  constructor () {
    super();
  }
}
class Grandchild extends Child {
  constructor () {
    super();
  }
}

var grandchild = new Grandchild();

console.log(grandchild); // Parent {}
console.log(grandchild.constructor.name); // Grandchild
console.log(grandchild instanceof Parent); // true
console.log(grandchild instanceof Child); // true
console.log(JSON.stringify(grandchild)); // {}

这是预期的行为吗?是console.log是搞乱了它,还是JavaScript认为任何后代类的实例首先是根级别类的实例?

1 个答案:

答案 0 :(得分:4)

console不标准,因为您可以看到in its MDN entry。在ES6中获取实例的类名的标准方法是使用instance.contructor.name。这在the spec中说明。