当我执行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认为任何后代类的实例首先是根级别类的实例? 最佳答案
如您所见,console
不是标准的。在ES6中获取实例的类名称的标准方法是使用instance.contructor.name
。这在in its MDN entry中说明。