Kiedy pracuję w jQuery, często umieszczam selektory w konsoli Chrome/Firebug i widzę, co mi dają. Są one zawsze ładnie sformatowane tak, jakby były tablice:Co sprawia, że konsola Firebug/Chrome traktuje niestandardowy obiekt jako tablicę?
staram się zorientować, co to jest, że sprawia, że konsola traktować obiektu jako tablica. Na przykład, następujące niestandardowy obiekt nie jest traktowana jako tablicy:
function ElementWrapper(id) {
this[0] = document.getElementById(id);
}
Jeśli następnie dodać length
właściwość i pewną metodę splice
, niespodziewanie działa jako matrycy, z właściwościami z całkowitej klucze traktowane jako członkowie tablic:
function ElementWrapper(id) {
this[0] = document.getElementById(id);
this.length = 1;
this.splice = Array.prototype.splice;
}
Więc zasadniczo moje pytanie brzmi: co określa, czy konsola wyświetla obiekt jako tablicę? Czy jest jakaś racjonalna przesłanka, czy też jest to całkowicie arbitralne "jeśli obiekt ma te właściwości, musi to być tablica?" Jeśli tak, jakie są decydujące właściwości?
Wielkie dzięki - to wspaniała odpowiedź! – lonesomeday
Więc dla wyniku selekcji jquery, który z nich jest prawdziwy? – Aliostad
@Aliostad '.length' i' .splice', jak pokazano w moim OP. – lonesomeday