Что выведет код JS ?

Что выведет код JS ?

https://t.me/javascriptv



Ответ:

"Marko Polo" [object Window]

Объяснение:

Стрелочные функции не создают собственный контекст для this, а используют значение this окружающего контекста. В нашем случае this в функции getName ссылается на контекст выполнения метода guessThis, то есть на сам объект, и мы легко обращаемся к его свойству name.

Во втором случае при передаче колбэка в метод, контекст выполнения теряется, поэтому this ссылается на глобальный объект. Также если бы был включен строгий режим то this в данном случае был бы равен undefined. Чтобы избежать потерю контекста можно использовать методы call, bind, или apply.

Код:

const myFavoriteObj = {
    guessThis() {
        const getName = () => {
            console.log(this.name);
        };
        getName();
    },
    name: "Marko Polo",
    thisIsAnnoying(callback) {
        callback();
    },
};

myFavoriteObj.guessThis();
myFavoriteObj.thisIsAnnoying(function() {
    console.log(this);
});


https://t.me/javascriptv

Report Page