gpt4 book ai didi

javascript - Object.create 改变了 Chrome 中原型(prototype)对象的控制台输出?

转载 作者:数据小太阳 更新时间:2023-10-29 04:43:59 25 4
gpt4 key购买 nike

今天我在玩游戏时注意到我在 Chrome 控制台中的一些对象显示为 Object 而不是构造函数名称。

这很奇怪,所以我将其归结为以下代码:

function Baz() {
this.baz = true;
}
var b = new Baz();
var c = Object.create(b);
console.log(b); // why is b outputting with Object not Baz?

在上面的代码 b 中,不是通过 Object.create 创建的,但在记录时它显示为 Object。 我没有打错字,错误地询问了c。当我什至还没有接触那个对象时,b 的日志已经被改变了。创建另一个实例 c,不应更改 b

这一定是 Chrome 的错误吧?有没有办法让 Chrome 在此处正确报告 Baz

这对于调试目的很重要。

enter image description here

更新 提交错误:https://code.google.com/p/chromium/issues/detail?id=478522

最佳答案

更新:这确实是 Chrome 41 和 Chrome 42 之间的回归。它被跟踪在这里:http://crbug.com/478522

Chrome 41 的输出: enter image description here

Chrome 42 的输出:

当您在开发工具中键入内容时,他们改进了语法高亮显示,这可能会失败。我联系了一位深入参与开发工具的 friend 。不错的发现。


没有。您描述的问题非常真实。

使用构造函数创建的对象将在记录它们时显示它们的名称,并且通常在 Chrome(和 node/io.js)中有更好的调试体验。

出于这个原因 - 我在自己的代码中避免使用 Object.create 进行原型(prototype)继承,尽管我在概念上更喜欢它。

我想你明白这一点 - 但我仍然想为 future 的读者澄清。 请注意,继承仍然发生在 Object.create 版本中 - 唯一的区别在于对象是如何记录和在调试器中处理的。

关于javascript - Object.create 改变了 Chrome 中原型(prototype)对象的控制台输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729067/

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