pbo*_*pbo 7 javascript google-chrome object-create console.log
今天我在玩的时候注意到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?
Run Code Online (Sandbox Code Playgroud)
在上面的代码中b,不是通过a创建的Object.create,但是在记录时它表示Object.我没有错字,错误地询问c.当我甚至没有碰到那个物体时,b的记录已被改变.创建另一个实例c,不应该改变b.
这必须是Chrome错误吗?反正有没有让Chrome在Baz这里正确报道?
这对于调试目的很重要.

更新错误提交:https://code.google.com/p/chromium/issues/detail? id = 478522
更新:这确实是Chrome 41和Chrome 42之间的回归.它在这里被跟踪:http://crbug.com/478522
Chrome 41的输出:

Chrome 42的输出:

当你输入开发工具时,他们对语法高亮进行了改进,这可能会破坏.我找到了一位深深参与开发工具的朋友.很好找.
不.你描述的问题非常真实.
使用构造函数创建的对象在记录它们时将显示其名称,并且通常在Chrome(以及node/io.js)中具有更好的调试体验.
出于这个原因 - 我Object.create在自己的代码中避免了原型继承,尽管我在概念上更喜欢它.
我想你明白这一点 - 但我仍然想为未来的读者澄清一下.请注意,继承仍然发生在Object.create版本中 - 唯一的区别在于如何在调试器中记录和处理对象.
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |