Google のコンソール API リファレンスには明確な説明が見つかりませんでしたが、理解したいと思ったので、ここに私の結論を示します。
これは、質問のコンテキストで興味深いものだけを保持して、jQuery で何が起こっているかを簡略化したものです。
var jQuery = function() {
return new jQuery.fn.init();
};
jQuery.fn = jQuery.prototype = {
init: function() {
return this;
}
};
var j = jQuery();
console.log(j);
>> jQuery.fn.jQuery.init {}
コンソールでオブジェクトをログに記録するとき、Chrome は、オブジェクトがコードでどのように設定されたかに応じて、ある種の内部識別子を表示します。これは、オブジェクトが作成された名前空間でのオブジェクトの構造のある種の表現です。fn とプロトタイプ (つまりjQuery.prototype = jQuery.fn = {...
) を逆にすると、jQuery.fn.init
ではなくとして出力されjQuery.fn.jQuery.init
ます。
不思議なことに、(jQuery のように) 配列のようなプロパティを追加すると、コンソールでオブジェクトが異なって表示されます。length
プロパティの削除/追加を試みましたが、数値型の値を持つプロパティと関数型の値を持つプロパティを追加するsplice
と、オブジェクトがコンソールに配列のように表示されます (角括弧付き)。
var jQuery = function() {
return new jQuery.fn.init();
};
jQuery.fn = jQuery.prototype = {
init: function() {
return this;
},
length: 0,
splice: function(){}
};
jQuery.fn.init.prototype = jQuery.fn;
var j = jQuery();
console.log(j);
>> [init: function, splice: function]
ですから、Chrome がオブジェクトの「名前」を出力する方法や、それをフォーマットする方法にはあまり注意を払うべきではないと思います...