я новичок в JS. и я не очень понимаю, как this работает. У меня есть несколько примеров, и они работают по-разному .
пример 1
var obj = {
id: "awesome",
cool: function coolFn() {
console.log( this);
}
};
var id = "not awesome";
obj.cool();
setTimeout( obj.cool, 100 );
codesandbox Object {id: "awesome", cool: function coolFn()}, null.
use strict {id: "awesome", cool: ƒ},Window{...}.
not use strict {id: "awesome", cool: ƒ},Window{...}.
create-react-app {id: "awesome", cool: ƒ},Window{...}.
example 2
var obj = {
id: "awesome",
cool: () => {
console.log(this);
}
};
var id = "not awesome";
obj.cool();
setTimeout(obj.cool, 100);
codesandbox undefined, undefined.
use strict Window{...},Window{...}.
not use strict Window{...},Window{...}.
create-react-app undefined , undefined.
кто может объяснить, что происходит в моих примерах?