Почему функция Javascript `arguments` не является экземпляром массива в node.js?

В последнее время, глядя на много кода NodeJS и Javascript, кажется, что аргументы не являются экземпляром Array, но все еще ведут себя как один, поэтому люди делают такие вещи, как Array.prototype.slice.call(arguments, ...) или [].slice.call(arguments), что добавляет многословия и увеличивает препятствия для новичков понимать и т.д. Есть ли причина, почему аргументы не являются экземпляром массива или это только одна из тех плохих частей?

Ответ 1

НЕТ. arguments является автономным объектом, который имеет только свойство length и возможность использовать [] для его индексации. Но в остальном это просто объект, а не объект Array.

И да, это действительно одна из плохих частей JavaScript.