Создание массивоподобных объектов в JavaScript

В JavaScript есть объекты, которые претендуют на то, чтобы быть массивами (или «подобными массиву»). Такие объектыarguments, NodeLists (вернулся изgetElementsByClassNameи т. д.) и объекты jQuery.

когдаconsole.logGed, они появляются как массивы, но это не так. Я знаю, что для того, чтобы быть похожим на массив, объект должен иметьlength имущество.

Поэтому я сделал «объект» как это:

function foo(){
    this.length = 1;
    this[0] = "bar";
}

var test = new foo;

Когда яconsole log(test)Я получаю (как и ожидалось)foo объект. Я могу "конвертировать" это к массиву, используя

Array.prototype.slice.call(test)

Но я не хочу преобразовывать его, я хочу, чтобы он был похож на массив. Как создать массивоподобный объект, чтобы при его использованииconsole.logГед, это выглядит как массив?

Я пробовал настройкуfoo.prototype = Array.prototype, ноconsole.log(new foo) все еще показываетfoo объект, а не массив.

Ответы на вопрос(5)

Ваш ответ на вопрос