Функция, которую объявляешь в объекте, не будет иметь контекст этого объекта. В твоем случае он у не свой. Если использовать стрелочную функцию () => {}, то ее контекстом будет тот, в котором объявлен сам объект в котором объявлена функция. Коротко говоря, ты не можешь обратиться через this к объекту в котором объявлена функция. Чтоб это произошло надо либо делать как-то иначе, либо задать ей нужный контекст.
function User() {
this.firstName = "Вася";
this.sayHi = () => {
return this.firstName;
}
}
let user = new User()
console.log(user.sayHi());