this keyword used to reference current object in javascript. There are two scenario where current object is determined differently. * Calling object represented by `this` in function. * Arrow function can reference object where the function defined. To demonstrate the above scenarios we shall take some examples. Suppose, var x = 10; (function() { console.log(this.x); })() // 10 (() => { console.log(this.x); })() // 10 There are two self executing functions both resulted in "10". At first look it seems behaving same, but there is basic deference what we going to see. const xObj = { value: 10, getValue: () => { return this.value; } }; const yObj = { value: 10, getValue: function () { return this.value; } }; xObj.getValue(); // undefined yObj.getValue(); // 10 Why undefined for `xO...