Непонятный момент в javascript (поведение функции)

function foo() {
  return 'qwerty';
}

foo.x = 'y';

console.log(foo);     // { [Function: foo] x: 'y' }
console.log(foo.x);  // 'y'

Как это вообще работает?
  • Вопрос задан
  • 2743 просмотра
Решения вопроса 2
linoleum
@linoleum
Функции - это объекты, можно добавлять им свойства и методы как любому другому объекту.
В чем проблема?)
Ответ написан
Комментировать
p00h
@p00h
Фехтовальщик-стропальщик
Пригласить эксперта
Ответы на вопрос 2
ScorpLeX
@ScorpLeX
Вы хотите получить что, qwerty?
Тогда стоит вызывать foo как функцию, console.log(foo()); // 'qwerty'
Вполне логичное поведение.
Ответ написан
Комментировать
Anonym
@Anonym
Программирую немного )
В javascript функция это объект со скрытым методом call. Соответственно, вы просто к тому же объекту добавили новый метод.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы