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上引用的错误.
大家,你能否解决这个问题,以提高其优先级?
你还没有说你正在使用什么浏览器,但我认为它必须是 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)
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |