Александр
Хз, стало понятнее или нет
Александр
Чет помойму понятнее не стало нифига(
Pavel
А так ждем отзыва от Светы :D
Александр
я чет не могу норм пример на ночь гляда придумать
Александр
думал как вывести контекст и показать как это все внутри работает, но понял, что это все еще сильно сложнее будет)
Александр
а еще можно вот так исхитриться, если Cat будет объявлено через var)
Александр
sayHi2 уже покажет мурзика)
Александр
https://exploringjs.com/deep-js/ch_global-scope.html
honey
отходила в общем, сейчас прочту выше
Александр
honey
нет...
honey
я даже не поняла с чего разбираться
honey
я просто знаю, что this это контекст текущего вызова
honey
и если у нас есть object.sayHi(), то тогда текущий контекст это обджект
honey
🙂
honey
и ещё мы выяснили что вроде как если с сеттаймаутом юзаешь this, то нужно либо явно передавать контекст (?? как??), либо байндить его
honey
также пока понятно, что мы можем либо посмотреть на функцию, которая лежит по ключу
либо вызвать функцию, которая лежит по ключу
honey
это ты для виндоу создал такой ключ
honey
в который положил значение Мурзик, угу
Александр
honey
а ранее этого ключа вообще у виндоу не было
Александр
вот первое и третье - фактически одно и тоже
Александр
honey
а почему this не ссылается на Cat ?
honey
если просто сделать console.log(Cat.sayHi) то будет же всё отлично
honey
потому что контекстом будет сам обхект Cat
Александр
потому, что sayHi находится внутри cat
honey
да
Александр
а когда ты передала sayHi в setTimeout, то оно уже не внутри cat, а внутри setTimeout
honey
так а в сеттаймауте у нас Cat никуда не девается ведь)))
Александр
почему?
honey
почему не внутри Cat? я ж метод sayHi то на коте использую
Александр
нет
Александр
ты прото отдала функцию
Александр
ты не передавала объект
honey
опа
honey
хммммммм
Александр
Ну посмотри пример с testTimeout
honey
функцию говоришь? минутку я переварю
honey
да
Александр
сет таймаут практически так же работает
Александр
Только там вместо for идет системное прерывание)
honey
а объект что, не передался сам?
Александр
нет
honey
почему нет?
Александр
потому что ты сделала callback = Cat.sayHi
Александр
и вызовется у тебя callback , а не sayHi
honey
но ведь когда я просто в консоли смотрю на Cat.sayHi - я же вижу верный результат, хотя и здесь я пишу то же самое
honey
так. Колбек - это функция, которая стоит первым аргументов в сеттаймауте?
honey
в данном случае
Александр
callback - это переменная
Александр
она же аргумент
Александр
когда ты вызываешь функцию testTimeout, то ты этой переменной присваеваешь значение.
Александр
А значение в данном случае - это просто функция
Александр
сделай в консоле так
let test = Cat.sayHi;
test();
И посмотри что выведет
honey
так, я не игнорю, я читаю инфу по ссылке выше
honey
Александр
не упарывайся) Сейчас не поможет
Александр
Александр
honey
😌
honey
а это капец)
honey
ну да ладно, разберемся
Александр
Почему?
Александр
Пример выше понимаешь
Александр
?
honey
самый крайний скрин ?
honey
про бакса и мурзика?
Александр
ага
honey
сейчас гляну
honey
ты в кота по ключу кладешь функцию сеё хай, и также собачке
Александр
ага
honey
затем ты вызываешь эти функции
Александр
ага
honey
я так понимаю что они отработают, у кота будет мяу, а у собачки гав ?_?
Александр
ага