Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Глобальный контекст (смена контекста) (https://javascript.ru/forum/misc/65050-globalnyjj-kontekst-smena-konteksta.html)

DivMan 22.09.2016 12:24

Глобальный контекст (смена контекста)
 
В этом коде, результат будет 81, это я понимаю

var x = 9;
var module = {
  x: 81,
  getX: function() { return this.x; }
};

module.getX();


Но почему, если метод getX указать ссылкой для переменной

var getX = module.getX


И потом вызывать эту переменную

getX()


То x берётся из глобального объекта window, а не из объекта module? Почему так?

По идеи

var getX = module.getX это ссылка

var getX = module.getX() а это присвоение и сразу вызов

Почему меняется контекст?

Dilettante_Pro 22.09.2016 12:40

DivMan,
http://getinstance.info/articles/jav...ution-context/

DivMan 22.09.2016 13:02

Там совсем другой пример

Яростный Меч 22.09.2016 13:50

https://learn.javascript.ru/object-methods - тут подробно и внятно

DivMan 22.09.2016 14:16

Я разобрался.

Я просто не понимал, то, что то переменной var getX = module.getX; присваивается только метод getX, а остальное содержимое самого объекта module игнорируется

Dilettante_Pro 23.09.2016 11:34

DivMan,
Вам же объясняют, что this меняется.
Если без this

var x = 9;
var module = {
  x: 81,
  getX: function() { return module.x; }
};

alert(module.getX());
var getX = module.getX;
alert(getX());


Часовой пояс GMT +3, время: 04:56.