Зачем здесь использовать call?

178
26 ноября 2016, 17:58
function showFullName() {
  alert( this.firstName + " " + this.lastName );
}
var user = {
  firstName: "Василий",
  lastName: "Петров"
};
showFullName.call(user) // "Василий Петров"

Когда вызвать эту функцию без call, то она выведет undefined undefined. Но почему? Если я передал ей аргумент user, и ее this становится user. Почему без call она не выводит firstName и lastname ?

Answer 1

Когда вы передаете аргумент user, её this не становится user. У не появляется первый аргумент, равный user. А this зависит от контекста вызова (судя по всему в вашем случае это будет window). А вот используя call и bind, вы можете изменить её this

READ ALSO
Яндекс блок «Поделиться» не появляется в динамически добавленном блоке

Яндекс блок «Поделиться» не появляется в динамически добавленном блоке

История такая: сайт из одной страницы, есть изначально скрытый (display:none) блок #ghost, в нем изначально пустой блок 'albom'

315
Открыть ссылку в новом окне

Открыть ссылку в новом окне

Есть список ссылок с атрибутом type="popup"

197
Вызов C# функции из JavaScript кода

Вызов C# функции из JavaScript кода

Доброе время суток!! Скажите, ребята, как можно демонстрировать вызов C# функции из JavaScript, чтобы можно было после выполнении получить результат...

323
Динамческий DOM без HTML и CSS

Динамческий DOM без HTML и CSS

Нужен ответ от знающих людей а еще лучше примеры, ссылки, статьи и прочее куда копать и где почитать

158