Код(взят с learn.js):
class PowerArray extends Array {
isEmpty() {
return this.length === 0;
}
}
let arr = new PowerArray(1, 2, 5, 10, 50);
alert(arr.isEmpty()); // false
let filteredArr = arr.filter(item => item >= 10);
alert(filteredArr); // 10, 50
alert(filteredArr.isEmpty());
Они пишут вот что:
Обратите внимание на интересный момент: встроенные методы, такие как filter, map и другие возвращают новые объекты унаследованного класса PowerArray. Их внутренняя реализация такова, что для этого они используют свойство объекта constructor.
Мой вопрос:
Какие еще объекты они возвращают? Откуда, Для чего, Как и Куда? И у какого объекта свойство constructor?
В примере выше,arr.constructor === PowerArray
Поэтому при вызове методаarr.filter()
он внутри создаёт массив результатов, именно используя arr.constructor
, а не обычный массив. Это замечательно, поскольку можно продолжать использовать методы PowerArray
далее на результатах.
Мои вопросы: внутри чего он создает массив результатов? Почему, как можно продолжать использовать методы на результатах?
Помогите, пожалуйста. Т.к. я вообще не код этот понять не могу, не описание к нему, которое выше прикреплено.
Learn. JavaAcript является справочником и потому не объясняет практически ничего.
Просьба модератору: пожалуйста, не удаляйте мой вопрос. Я искал вчера на тему расширения классов в Гугле ответы на мои вопросы и не нашел. В т.ч. смотрел видосы на Ютубе.