я думаю дело в приоритете операторов, сначала выполнится обращение к свойству prop объекта, затем начнет работать оператор присваивания и создаст новый объект. В итоге: присваивание значения для obj.prop будет использовать старый объект, а переменная obj будет содержать новый пустой объект.
Тимур, так может с этого и нужно было начинать вопрос. По сути ничего не меняется: у .second__itemposition: relative, у .second__item_active::beforeposition: absolute. Активному элементу добавляете .second__item_active с остальных удаляете его.
node --print-bytecode wtf.js > wtf.bytecode
я думаю дело в приоритете операторов, сначала выполнится обращение к свойству prop объекта, затем начнет работать оператор присваивания и создаст новый объект. В итоге: присваивание значения для obj.prop будет использовать старый объект, а переменная obj будет содержать новый пустой объект.