Я новичок в 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
.
кто может объяснить, что происходит в моих примерах?