2015-12-25 4 views
2

Я смотрел thenewboston «Beginner JavaScript Tutorial - 28 - Arrays» и увидел, что он создал массив, используя метод new Array(); Моя первая мысль заключалась в том, что Array() похож на конструктор, который может принимать огромное, но не бесконечное количество аргументов. Мой вопрос: как сделать такой конструктор, который может принимать бесконечное количество аргументов? Вы строите тысячи конструкторов? (Это было бы работу никто не хочет делать.)Как создается конструктор с бесконечными аргументами?

Вот пример:

var names = new Array('John', 'Mary', 'Thomas', 'Sara'); 

Здесь я создал массив с помощью всего 4 аргументов, но если я не ошибаюсь, я могу хранить тысячи имена в этом массиве. Опять же, как вы создаете такой конструктор, который может принимать множество аргументов?

Заранее спасибо.

+1

'Array()' на самом деле является конструктором, который может принимать огромное количество аргументов. Все функции в JavaScript можно вызывать с любым количеством аргументов, независимо от того, как были объявлены функции. В этом отношении язык отличается от многих других общих языков. – Pointy

ответ

4
function logArgs() { 
    console.log(arguments); 
} 
logArgs(1, 2, 3); //=> [1, 2, 3] 

arguments представляет собой массив-подобный объект, содержащий все аргументы, передаваемые в функцию.

Конечно, конструктор Array, скорее всего, реализован изначально, но вы можете сделать аналогичные функции/конструкторы самостоятельно.

Для получения дополнительной информации см. the MDN doc page on arguments.

+0

Я понимаю сейчас. Спасибо –

+1

Следует отметить, что в ES2015 вы можете использовать параметр [rest parameter] (https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Functions/rest_parameters), чтобы получить реальный экземпляр массива вместо массива, такого как Object. 'function logArgs (... args) {console.log (args); } ' – danillouz

0

В любом случае, передача всех параметров в одном массиве является хорошей практикой. И исправить вашу проблему

Смежные вопросы