Ответ 1
Когда Javascript проверяет, можно ли вызвать метод, он использует утку. Это означает, что когда вы хотите вызвать метод foo
из некоторого объекта, который должен иметь тип bar
, он не проверяет, действительно ли этот объект является bar
но проверяет, есть ли у него метод foo
.
Так что в JS можно сделать следующее:
let fakeArray = {length:5};
fakeArray.length //5
let realArray = [1,2,3,4,5];
realArray.length //5
Первый из них похож на поддельный массив javascript (который имеет length
свойства). Когда Array.from
получает значение свойства length
(в Array.from
случае 5), он создает реальный массив длиной 5.
Этот тип объекта fakeArray часто называется arrayLike.
Вторая часть - это просто функция стрелки, которая заполняет массив значениями индексов (второй аргумент).
Эта техника очень полезна для насмешки какого-либо объекта для тестирования. Например:
let ourFileReader = {}
ourFileReader.result = "someResult"
//ourFileReader will mock real FileReader