我正在玩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加注其优先级?
答案 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.