Проверяет понимание того, что функции в JavaScript являются объектами и могут иметь собственные свойства.
В JavaScript функции являются объектами особого типа. Это означает, что они могут хранить данные в виде свойств, как и любой другой объект. Такое поведение возможно благодаря тому, что функции относятся к категории «объектов первого класса» — их можно передавать, возвращать и присваивать, а также расширять свойствами.
Когда вы создаёте функцию, движок JavaScript создаёт объект, который содержит код функции и внутренние ссылки. Вы можете добавить к этому объекту любые свойства, используя точечную нотацию или скобки. Эти свойства будут доступны как внутри функции (через имя функции), так и снаружи.
function greet(name) {
return `Hello, ${name}!`;
}
greet.defaultName = 'World';
console.log(greet.defaultName); // 'World'
console.log(greet('Alice')); // 'Hello, Alice!'
Свойства функции не влияют на её вызов и не попадают в область видимости. Они хранятся отдельно и могут использоваться для различных целей.
function factorial(n) {
if (n <= 1) return 1;
if (factorial.cache[n]) return factorial.cache[n];
factorial.cache[n] = n * factorial(n - 1);
return factorial.cache[n];
}
factorial.cache = {};
console.log(factorial(5)); // 120
console.log(factorial.cache); // {2: 2, 3: 6, 4: 24, 5: 120}
Использование свойств функций — это мощный приём, который помогает организовать код без глобальных переменных. Он особенно полезен для кэширования, мемоизации и хранения метаданных, связанных с конкретной функцией. Применяйте его, когда нужно сохранить состояние, ассоциированное с функцией, но не хочется создавать отдельный объект или класс.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию