Ответ 1
Это не имеет ничего общего с jQuery или Angular. Это функция, которая была введена в ES2015.
Это конкретное использование ...
фактически не имеет официального имени. Имя, которое соответствует другим потребностям, будет "распространенным аргументом" (общий термин будет "синтаксис распространения" ). Он "взрывает" (распространяется) итерабельность и передает каждое значение в качестве аргумента функции. Ваш пример эквивалентен:
this.heroes.push.apply(this.heroes, Array.from(heroes));
Кроме того, что более кратким, другое преимущество ...
заключается в том, что его можно более легко использовать с другими конкретными аргументами:
func(first, second, ...theRest);
// as opposed to the following or something similar:
func.apply(null, [first, second].concat(Array.from(heroes)));