var a = "haha"
let first={
a:1,
b:2,
c:()=> {return this.a},
d:function() { return this.a},
};
let second={
a:10,
b:20,
c:first.c(),
d:first.d(),
};
console.log(second.c)//haha (1)
console.log(second.d)//1 (2)
Имеем два простых объекта в JS и несколько их методов, однако поведение методов очень разница
1) получаем из метода с объекта first значение"this.a" сохраняем его в переменную и и когда вызываем в консоле
получаем свойство "а" глобального объекта
2)
получаем свойство "a" из объекта second сохраняем его и выводим в консоль
Вопрос первый почему в 1 мы получаем просто "this.a" и сохраняем, а во втором сначала вызываем "this.a" в объекте, а результат уже сохраняем.