gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:56:26 26 4
gpt4 key购买 nike

我正在玩 ECMAScript6 类。

我还是不明白为什么会出现下面的代码:

"use strict";

class A {}
class B extends A {}

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

显示:

一个{}

代替:

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 { }

我是否需要将我的类(class)名称指定为“B”?是否有这样的选项可以传递,或者属性或函数来定义?


T.J. Crowder 明白了:这是 Chrome 上的一个引用错误。

各位大神,能不能给这个bug加个星号,提高它的优先级?

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

最佳答案

你没有说你使用的是什么浏览器,但我认为它必须是 Chrome,考虑到你显示的输出样式并且它可以运行。 (如果我在 IE11 中运行它,我得到的是 [object Object] {}。如果我在 Firefox 中运行它,我得到一个错误——因为 Firefox doesn't support class yet。)

除了 Chrome 中的错误,我想不出任何原因。对 class 的支持对于 Chrome 来说是非常新的,很可能是因为开发工具还没有完全正确地处理它。 我没有在 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.

关于Javascript console.log 不显示派生类名称 - 继承 - 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31784528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com