Javascript использует цепочки областей действия, чтобы установить область действия для данной функции. Обычно существует одна глобальная область, и каждая определенная функция имеет свою собственную вложенную область. Любая функция, определенная в другой функции, имеет локальную область видимости, которая связана с внешней функцией. Это всегда позиция в источнике, который определяет область действия.
Элементом в цепочке областей действия в основном является Карта с указателем на родительскую область.
При разрешении переменной javascript начинается с самой внутренней области и выполняет поиск за ее пределами.
Ваш пример запускается, если вы напишите его так:
console.log(this.a);