【发布时间】:2012-02-06 11:35:18
【问题描述】:
我想我可能发现了 Google Chrome 的一个错误(16.0.912.75 m,撰写本文时的最新稳定版)。
var FakeFancy = function () {};
console.log(new FakeFancy());
var holder = {
assignTo : function (func) {
holder.constructor = func;
}
};
holder.assignTo(function () { this.type = 'anonymous' });
var globalConstructor = function () { this.type = 'global' }
console.log(new holder.constructor());
如果您在 Firefox 中运行该块,它会显示两个都列为“对象”,第二个具有 type = local,非常好。但是如果你在 Chrome 中运行它,它会显示
> FakeFancy
> globalConstructor.type
如果你展开树,内容是正确的。但我无法弄清楚 Chrome 列出的每个记录对象的第一行是什么。因为我没有处理原型,所以这些应该是普通的旧对象,不会从任何地方继承。
起初,我以为它与 WebKit 相关,但我在最新的 Safari for Windows (5.1.2 7534.52.7) 中尝试过,都显示为“对象”。
我怀疑它试图猜测构造函数的调用位置。匿名构造函数的间接性是否搞砸了?
【问题讨论】:
-
如果您的问题只是关于前两行及其输出,为什么还要包含如此多的代码? (“但我无法弄清楚 Chrome 将什么列为第一行。”)我一定是误解了......
-
抱歉,添加了清晰的编辑。记录的每个对象的第一行。
标签: javascript google-chrome webkit google-chrome-devtools