I experimented a bit with this keyword and I found a strange problem. When a variable is declared as var then this correctly refer to this variable. But if i declared the same variable as let or const then this lost reference and show undefined in console.
var prop = "outer"; // not working if let or const.
let foo = {
  prop: "inner",
  show() {
    console.log(this.prop)
  }
}
let a = foo.show;
let b = foo.show.bind(foo);
a()
b() 
    