Это в codesandbox.io, создать-реагировать-приложение, использовать строгий и не использовать строгий - PullRequest
3 голосов
/ 20 февраля 2020

Я новичок в js. и я не очень понимаю, как работает this. У меня есть несколько примеров, и они работают по-разному в codesandbox.io, create-реагировать-приложение, использовать строгий и не использовать строгий.

пример 1

var obj = {
    id: "awesome",
    cool: function coolFn() {
        console.log( this);
    }
};

var id = "not awesome";

obj.cool(); 

setTimeout( obj.cool, 100 ); 

в codeandbox Object {id: "awesome", cool: function coolFn()}, null.

используется строгое {id: "awesome", cool: ƒ},Window{...}.

не используется строгое {id: "awesome", cool: ƒ},Window{...}.

в create-реагировать-приложение {id: "awesome", cool: ƒ},Window{...}.

пример 2

var obj = {
  id: "awesome",
  cool: () => {
    console.log(this);
  }
};

var id = "not awesome";

obj.cool();

setTimeout(obj.cool, 100);

в кодах и поле undefined, undefined.

используется строго Window{...},Window{...}.

не используется строгий Window{...},Window{...}.

в create-реагировать-приложение undefined , undefined.

кто может объяснить, что происходит в моих примерах?

...