jQueryオブジェクトは配列のように動作しますが、実際はという配列のようなものですオブジェクトです。配列のようなオブジェクトは、length
というプロパティを持つ数値キーを使用するオブジェクトです。つまり、native array methodsとの互換性に必要な最小値です。
jQueryのオブジェクトは、(indexOf
又はreverse
等)アレイ状と実際のないArray
オブジェクト、ネイティブ配列の操作は直接呼び出すことができないだけであるからです。あなたはArray.prototype
を使うことができますが、jQueryの機能を拡張することもできます。
$('div').reverse(); // TypeError: $("div").reverse is not a function
// we can use Array.prototype though
Array.prototype.reverse.apply($('div'));
// or we can extend jQuery very easily
$.fn.reverse = Array.prototype.reverse;
$('div').reverse(); // now it works!
Firebugには、jQueryオブジェクトの書式設定のための特別なケースは含まれていないものとします。クイック検索でFirebugメーリングリストにa relevant postと表示されます。情報がまだ正しいと仮定すると(投稿は1月からです)、有限長 splice
の場合、Firebugはオブジェクトを配列としてフォーマットします。
JQueryはこれらの基準の両方を満たしていますが、their implementation of splice
はネイティブArray
メソッドの直接コピーに過ぎません。これは文書化されていません。つまり、内部使用のためだけです。あるいは、おそらくFirebugを使ってjQueryオブジェクトをうまくフォーマットすることを目的として追加されたものです。
数字キーのオブジェクトだけではないと思いますか? – Marius
Firebugは、jQueryオブジェクトを配列として表示しますが、そのような手動で作成されたオブジェクトは表示しません。 – AnC