Javascript console.log不显示派生类名 - 继承 - 类

时间:2015-08-03 10:01:20

标签: javascript class ecmascript-6 prototypal-inheritance console.log

我正在玩ECMAScript6课程。

我仍然不明白为什么以下代码:

"use strict";

class A {}
class B extends A {}

let b = new B();
console.log(b);

显示:

A {}

而不是:

B {}

直播示例:



(function () {
    "use strict";

    class A {}
    class B extends A {
        foo() {
        }
    }

    let b = new B();
    console.log(b);
})();

Open the console. Works only on very up-to-date browsers (such as Chrome 43+).




如何在console.log上获得预期的逻辑输出 B {}

我是否需要将我的班级名称指定为" B " ?是否有传递选项或属性或函数来定义?

T.J。克劳德得到了它:这是Chrome上引用的错误。

每个人,你能否为这个bug加注其优先级?

https://code.google.com/p/chromium/issues/detail?id=510688

1 个答案:

答案 0 :(得分:2)

你还没有说过你正在使用什么浏览器,但我认为它必须是Chrome,考虑到你展示的输出风格,它完全可以运行。 (如果我在IE11中运行它,我会得到[object Object] {}。如果我在Firefox中运行它,我会收到错误 - 因为Firefox doesn't support class yet。)

除了Chrome中的错误之外,我无法想到任何其他原因。支持class对于Chrome来说是非常的新功能,很容易就是devtools还没有正确处理它。 我没有在快速搜索中找到关于http://crbug.com的错误报告,您可能想要提交一个。但是you did find it

确实应该使用您的代码显示B,而不是A 以相同的老式方式执行

(function() {
  "use strict";

  function A() {}

  function B() {
    A.call(this);
  }
  B.prototype = Object.create(A.prototype);
  B.prototype.constructor = B;

  var b = new B();
  console.log(b);
})();
Open the console.