Javascript's Tricky "This" Keyword and Why Arrow Functions Matter