Google Chrome(この執筆時点では最新の安定版、16.0.912.75 m)でバグが見つかった可能性があります。Chromeコンソールでlog()で表示されるのは何ですか?
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でそのブロックを実行した場合、それは、両方ともローカル有する第2のタイプ=と「オブジェクト」として記載されているかなり良い示しています。 Chromeで実行すると、
> FakeFancy
> globalConstructor.type
が表示されます。ツリーを展開すると内容が正しいことがわかります。しかし、ログに記録された各オブジェクトの最初の行としてChromeがリストしているものを特定することはできません。私はプロトタイプを操作していないので、これらはどこからでも継承されない普通の古いオブジェクトでなければなりません。
最初は、WebKitに関連していると思っていましたが、最新のSafari for Windows(5.1.2 7534.52.7)で試してみましたが、どちらも「オブジェクト」として表示されます。
私は、コンストラクターがどこから呼び出されたかについていくつか推測しているように思っています。匿名のコンストラクタのインダイレクションはそれを乱していますか?
あなたの質問が最初の2行とその出力についてのみである場合、なぜ余分なコードを含めるのですか? (しかし、私は、Chromeが最初の行に挙げられているものを理解することはできません。)私は誤解する必要があります... – Domenic
それを残念にして、明快な編集を追加しました。ログに記録された各オブジェクトの最初の行。 –