• И снова this в javascript?

    @BlackSSA Автор вопроса
    kova1ev, Ура! Одной тайной js меньше!!! Вот с ссылками на ячейки памяти мне, почему-то, больше понятно. Спасибо!!!
  • И снова this в javascript?

    @BlackSSA Автор вопроса
    возможно я не понимаю, что значит фраза " контекст с которым они были вызваны"? Как рассуждаю я:
    1) Проверяю, что в данной точке программы контекст=object()
    console.log(this);//object
    2) Ага, раз у меня в этой точке контекст такой, то и контекст функции будет такой-же. И когда я вижу, что контекст нефига не такой, то по неволе чувствуешь себя ребенком, которому только что сказали, что деда мороза не существует!
    За код в fiddle спасибо, но боюсь, что ES2015 с классами и стрелочными функциями меня сейчас еще больше запутает (
  • И снова this в javascript?

    @BlackSSA Автор вопроса
    Т.е., я правильно понимаю, что где-бы я не вызывал функцию, даже если она объявлена внутри метода объекта
    var o = {
        f1: function () {
            var innerFunc = function () {
                console.log(this);
            }
            innerFunc();
        }
    }
    , то она по любому будет ссылаться на window, а если я вызываю метод объекта, то он по-любому будет ссылаться на свой объект? Тогда, совсем не понимаю, зачем писать, что this зависит от контекста вызова. Так бы и написали, что если у вас функция, то this=window, если у вас метод, то this = object(если явно не используются bind, call и т.д.). Но тогда возникают другие вопросы - в знаменитом примере с таймером
    setTimeout(o.method,1000)
    с какого перепуга теряется контекст? Ведь явно указан метод какого объекта вызывается. Как с этим бороться я знаю(забиндить на o), но опять таки, использую это без понимания почему так. И еще вопрос тогда возникает: почему, если я указываю например в input-е onclick="fun(e)", то по вышеописаной логике this в этом методе должен указывать на window, а он указывает на объект инпута. Я уже начинаю биться в истерике (
  • И снова this в javascript?

    @BlackSSA Автор вопроса
    но ведь в 11-ой строке никаких точек нет? Про отличие методов и функций я читал, вроде даже понял. Но это не дает мне понимания заданного вопроса - если я в контексте, то почему функция в строках 8, 9 ссылается на window, а в 11-ой на o?