Поведение this. Почему, ведь this ссылается на windows

128
14 февраля 2022, 08:00
function f(){
   alert(this)
}
f.call(f)

Результат в окне - function f(){alert(this)}. Почему?

Answer 1

Для начала надо понять что делает функция. Она выдает значение this. this в функции - window (не windows).

function f(){ 
   alert(this) 
} 
f() // в этом случае выдаст оригинальное значение this

Но если вы привязываете контекст, использую call, то this'ом становиться то, что вы указали. Вы указали функцию определенную. Вот функция и вызывает alert c кодом этой функции.

function f(){ 
   alert(this) 
} 
f.call(f)

Легко понять на примере:

function f(){ 
   alert(this) 
} 
f.call('1');

READ ALSO
Как подсчитать количество элементов в разных блоках?

Как подсчитать количество элементов в разных блоках?

Подскажите, пожалуйста, как правильно подсчитать и вывести в <span></span> количество элементов в разных блоках (для каждого отдельно) с помощью...

106
Не работает обработчик событий

Не работает обработчик событий

Есть скрипт для страницы, который применяет методы fadeIn и fadeOut для некоторых блоков, при ширине окна браузера более 900 pxПроблема в том, что если...

96
SQL Запрос с выборкой

SQL Запрос с выборкой

Извините если неправильно пишу вопрос,новуенький просто! У меня есть база данных, в ней есть таблица Children, где находится их возраст И есть...

84
Как залить проект с бд на гитхаб?

Как залить проект с бд на гитхаб?

Делаю проект aspnet core с бд, как мне залить проект в месте с бд() что-бы я мог его развернуть на другой машине??

156