я понял, но почему она тут применяется, а не просто obj.key? Вот этот момент не могу понять. Я только начал изучать js и такую работу с объектами еще не изучал.
let obj = {
val1: document.querySelector('input[name=inputData]').setAttribute('class', 'bgred')
};
Вы создаёте объект obj, у которого поле val1 тут же равняется РЕЗУЛЬТАТУ выполнения document.querySelector('input[name=inputData]').setAttribute('class', 'bgred'), при этом при каждом обращении к obj.val1 вы просто получаете уже присвоенный единожды результат.
В этом случае
let obj = {
val1: function () { document.querySelector('input[name=inputData]').setAttribute('class', 'bgred') }
};
Вы создаёте объект obj, у которого поле val1 содержит указатель на функцию function () { document.querySelector('input[name=inputData]').setAttribute('class', 'bgred') }. Соответственно, вы можете вызывать эту функцию когда вам необходимо таким образом: obj.val1();
А _ => тоже самое, что и () => и почти тоже самое, что function () {}, это из ecmascript 6, подробнее тут: https://habr.com/post/252323/