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

Den*_*aut 9 javascript class prototypal-inheritance ecmascript-6 console.log

我正在玩ECMAScript6课程.

我还是不明白为什么以下代码:

"use strict";

class A {}
class B extends A {}

let b = new B();
console.log(b);
Run Code Online (Sandbox Code Playgroud)

显示:

一个 { }

代替 :

B {}

实例:

(function () {
    "use strict";

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

    let b = new B();
    console.log(b);
})();
Run Code Online (Sandbox Code Playgroud)
Open the console. Works only on very up-to-date browsers (such as Chrome 43+).
Run Code Online (Sandbox Code Playgroud)


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

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


TJ Crowder得到了它:它是Chrome上引用的错误.

大家,你能否解决这个问题,以提高其优先级?

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

T.J*_*der 2

你还没有说你正在使用什么浏览器,但我认为它必须是 Chrome,考虑到你显示的输出样式并且它完全运行。(如果我在 IE11 中运行它,我会得到[object Object] {}相反的结果。如果我在 Firefox 中运行它,我会得到一个错误 - 因为 Firefox还不支持class。)

除了 Chrome 中的错误之外,我想不出任何原因。对 Chrome 的支持class非常新的,很可能是开发工具还没有完全正确地处理它。我在http://crbug.com上快速搜索时没有找到错误报告,您可能需要提交一份。你确实找到了

它确实应该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);
})();
Run Code Online (Sandbox Code Playgroud)
Open the console.
Run Code Online (Sandbox Code Playgroud)

  • 你明白了:这似乎是 crbug 上引用的错误:https://code.google.com/p/chromium/issues/detail?id=510688 (2认同)