Вы вызываете temp (), который собирается вызывать окно, поэтому он печатает window.name вместо Faviourite
let hat = {
name: "Faviourite",
writeDetails: () =>
console.log(this.name)
};
let temp = hat.writeDetails;
temp();
Так как JavaScript не имеет области действия блока, доступны только функциональные области, поэтому вы не сможете получить к нему доступ напрямую как к хаку, вы можете получить доступ к переменной hat напрямую вместо this.name
использовать hat.name
. Возможно, вы захотите просмотреть этот ответ для получения дополнительных объяснений и других ответов в том же ключе.
Во втором случае, если вы видите, что ES5 по-прежнему использует функцию () {}жирной стрелки, которую, как вы думаете, вы используете, этот блог может помочь вам понять