Прочитав этот SO-вопрос, я все еще немного запутался относительно того, что делает Array.apply. Рассмотрим следующий фрагмент:
new Array(5).map(function(){
return new Array(5);
});
Я ожидаю, что это приведет к инициализации массива с 5 неопределенными записями, а затем отобразит их, создав двухмерный массив из 5x5);
Вместо этого я просто получаю массив, как если бы он никогда не сопоставлялся:
[undefined, undefined, undefined, undefined, undefined]
Когда я завершаю вызов конструктора в массив в вызове Array.apply, тогда переходим к нему, он работает так, как ожидалось:
Array.apply(null, new Array(5)).map(function(){
return new Array(5);
});
в результате чего;
[[undefined, undefined, undefined, undefined, undefined],
[undefined, undefined, undefined, undefined, undefined],
[undefined, undefined, undefined, undefined, undefined],
[undefined, undefined, undefined, undefined, undefined],
[undefined, undefined, undefined, undefined, undefined]];
Какая сделка? Является ли Array.apply другим способом вызова нового массива Array() или Array.prototype.constructor? Есть ли другие ситуации, когда это было бы выгодно? Кроме того, почему мой первый подход не зашел на карту, которую я отправлял?
Благодарю! -Neil