Понимание контекста исполнения внутри литерала объекта - PullRequest
0 голосов
/ 26 апреля 2020

Я очень новичок в javascript программировании, я пытаюсь понять, как работает javascript программа. Поэтому я прочитал о таких понятиях, как контекст выполнения, стеки выполнения и т. Д. c. Поняв немного контекста исполнения, я узнал, что "this" относится к контексту исполнения. Поэтому я попытался напечатать контекст выполнения внутри литерала объекта, чтобы проверить контекст выполнения, поэтому я написал следующий код.

var obj = {
    method: function() {
        console.log(this);
    }
};
obj.method();

Это дает мне вывод в виде:

{ method: [Function: method]}

Увидев это, у меня возникли два вопроса: является ли приведенный выше код корректным для определения контекста выполнения? и если да, то не должен контекст выполнения должен быть Object {method: function ()} вместо вывода, который он выдает.

Я много читал об этом, но не смог его взломать.

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

В Chrome вывод выглядит как

{method: ƒ}

Inte rnet Explorer

[object Object]   {}

Firefox

Object { method: method() }

Все они означают То же самое и относится к объекту obj.

1 голос
/ 26 апреля 2020

Вы на самом деле правы.

this относится к среде, в которой выполняется код JavaScript.

И вы также правы в том, что он является объектом в вашем конкретном случае.

var obj = {
  method: function() {
      console.log(typeof this);
  }
};
obj.method();

Запустите приведенный выше фрагмент, вы найдете тип this в качестве объекта.

Это означает, что ваша среда (this) объект, который содержит свойство с именем method, которое является функцией.

В this есть гораздо больше, чем это.

...