Когда я занимаюсь разработкой в jQuery, я часто печатаю селекторы в консоли Chrome / Firebug и смотрю, что они мне дают.Они всегда красиво отформатированы, как если бы они были массивами:
Я пытаюсь понять, что заставляет консоль обрабатывать объект как массив.Например, следующий пользовательский объект не обрабатывается как массив:
function ElementWrapper(id) {
this[0] = document.getElementById(id);
}
Если затем добавить свойство length
и метод splice
, он волшебным образомработает как массив, с любыми свойствами с целочисленными ключами, которые рассматриваются как члены массивов:
function ElementWrapper(id) {
this[0] = document.getElementById(id);
this.length = 1;
this.splice = Array.prototype.splice;
}
Поэтому, по сути, мой вопрос таков:отображает объект в виде массива ?Есть ли какое-то объяснение этому, или это совершенно произвольно, «если объект обладает этими свойствами, это должен быть массив?»Если да, то каковы решающие свойства?