Сфера этого в самоисполняющейся функции - PullRequest
0 голосов
/ 20 января 2019

Кто-нибудь может сказать, почему глобальная область не применима в следующем случае?Почему строка № 6 печатается неопределенной?Разве внешнее «это» не должно быть доступно во внутренней самореализующейся функции?

var myObj = {
  test1 : 4,
  func : function(){
    console.log(this.test1); //prints 4
    (function(){
      console.log("From self-executing function : " + this.test1); //prints undefined
    })();
  }
};

myObj.func();

Где как, в следующем случае глобальная область работает нормально.test1, объявленный во внешней области видимости, прекрасно доступен во внутренней функции.

var test1 = 10;
    (function(){
      console.log("From self-executing function : " + test1); //prints 10
    })();

Может кто-нибудь объяснить, что мне не хватает, чтобы понять здесь?

1 Ответ

0 голосов
/ 20 января 2019

Во внутренней функции this относится к глобальному объекту (если не в строгом режиме).

Вы можете изменить код следующим образом для достижения ожидаемого результата:

var myObj = {
  test1 : 4,
  func : function(){
    console.log(this.test1);
    var self = this;
    (function(){
      console.log("From self-executing function : " + self.test1);
    })();
  }
};

myObj.func();
...