Назад к задачам
Junior — Senior
5

Что выведет консоль при вызове методов объекта в JavaScript

Компании, где спрашивали:

Альфа-БанкАльфа-Банк
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Нужно предсказать, какие значения появятся в консоли после выполнения каждой строки кода ниже. Обратите внимание на различия между обычными функциями и стрелочными, а также на влияние bind и потерю контекста.

var person = {
    firstName: 'Bill',
    lastName: 'Ivanov',
    sayName: function() {
        console.log(this.firstName);
    },
    sayLastName: () => {
        console.log(this.lastName);
    }
};

person.sayName(); // ?

var unboundSayName = person.sayName;

unboundSayName(); // ?

person.sayName.bind({ firstName: 'Boris' })(); // ?

person.sayName(); // ?
person.sayLastName(); // ?

person.sayName.bind({ firstName: 'Boris' }).bind({ firstName: 'Tom' })(); // ?
person.sayLastName.bind({ lastName: 'Petrov' })(); // ?