javascript - ECMAScript 6 子类打印 parent 姓名

标签 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 认为任何后代类的实例首先是根级别类的实例?

最佳答案

console 不是标准的,如您所见 in its MDN entry 。在 ES6 中获取实例的类名的标准方法是使用 instance.contructor.name。这在 the spec 中有说明。 .

关于javascript - ECMAScript 6 子类打印 parent 姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34624094/

相关文章:

javascript - 用 arrayBuffer 录制 mp3

javascript - 跨不同容器 div 的 ngFor 数据长度为 4

Javascript 将参数传递给循环内的 setTimeout 函数

javascript - 如何更改 NVD3 饼图的颜色

javascript - var 如何拥有一个值,然后在同一条 console.log 消息中取消分配?

javascript - React Router 和历史

javascript - 无法导入模块的属性

javascript - 如果 Tamarin 在 Mozilla Firefox 中运行,是否可以运行 ES4 代码?

intellij-idea - 如何替换 intelliJ 上第一个正则表达式的捕获?

javascript - 这在粗箭头函数中未定义,但在封闭范围内定义