Объекты имеют более общую природу: они являются неупорядоченными наборами произвольных значений с доступом по ключу. Иначе говоря, вы обращаетесь к элементам по строковому имени (ключу или свойству) вместо числовой позиции (как в случае с массивами).
Если this является характеристикой выполнения функции, прототип является характеристикой объекта и конкретного преобразования обращения к свойству.
Третий способ вызова функции — метод call(..), который получает объект (otherHomework в данном случае), используемый для назначения ссылки this для вызова функции.
Область видимости статична, и она содержит фиксированный набор переменных, доступных в конкретный момент и в точке, в которой определяется функция. Контекст выполнения функции динамичен, и он полностью зависит от того, как вызывается функция (независимо от того, где она определена и даже откуда вызывается).
контекст выполнения, и для обращения к ней из функции используется ключевое слово this.
function counter(step = 1) {
var count = 0;
return function increaseCount(){
count = count + step;
return count;
};
}
Пример:
function greeting(msg) {
return function who(name) {
console.log(`${ msg }, ${ name }!`);
};
}
Замыкание возникает тогда, когда функция запоминает и продолжает обращаться к переменным, находящимся вне ее области видимости.
По большей части для всех встроенных итерируемых значений в JS доступны три формы итераторов: только для ключей (keys()), только для значений (values()) и для записей (entries()).
А если вы хотите получить индекс и значение для перебора массива, создайте итератор для записей методом entries()