Создание массивоподобных объектов в JavaScript
В JavaScript есть объекты, которые претендуют на то, чтобы быть массивами (или «подобными массиву»). Такие объектыarguments
, NodeList
s (вернулся изgetElementsByClassName
и т. д.) и объекты jQuery.
когдаconsole.log
Ged, они появляются как массивы, но это не так. Я знаю, что для того, чтобы быть похожим на массив, объект должен иметь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
объект, а не массив.