jQueryで開発しているときに、自分がChrome/Firebugコンソールにセレクタを入力して、自分が何を私に与えるかをよく知ることがあります。彼らが配列であるかのように彼らは常にきれいにフォーマットされています。私はそれはそれは、コンソールが配列としてオブジェクトを扱う可能であるものをうまくしようとしていますFirebug/Chromeコンソールがカスタムオブジェクトを配列として扱う理由は何ですか?
。例えば、次のカスタムオブジェクトが配列として扱われない:
function ElementWrapper(id) {
this[0] = document.getElementById(id);
}
I次いでlength
性及びsplice
メソッドを追加する場合、それは魔法の整数を持つ任意の特性を有する、アレイとして動作しますアレイのメンバーとして扱わキー:
function ElementWrapper(id) {
this[0] = document.getElementById(id);
this.length = 1;
this.splice = Array.prototype.splice;
}
だから本質的に私の質問は:コンソールがオブジェクトを配列として表示するかどうかを決定するもの?その根拠がありますか、それとも完全に任意ですか?「オブジェクトにこれらのプロパティがある場合、配列でなければなりませんか?もしそうなら、決定的な特性は何ですか?
多くのありがとう - それは素晴らしい答えです! – lonesomeday
したがって、jqueryの選択結果はどちらですか? – Aliostad
@Aliostad '.length'と' .splice'は、私のOPに示されています。 – lonesomeday