Everyone is aware of this in javascript, but there are also instances of self encountered in the wild, such as here
So, what is the differe
Find below some combinations of 'window', 'self' and 'this' console outputs in the global scope (browser environment) to see where it is referring to.
console.log( window ); // Window {…}
console.log( self ); // Window {…}
console.log( this ); // Window {…}
console.log( window.window ); // Window {…}
console.log( window.self ); // Window {…}
console.log( window.this ); // undefined
console.log( self.self ); // Window {…}
console.log( self.window ); // Window {…}
console.log( self.this ); // undefined
console.log( this.this ); // undefined
console.log( this.window ); // Window {…}
console.log( this.self ); // Window {…}
console.log( window.window.window ); // Window {…}
console.log( self.self.self ); // Window {…}
console.log( window.self.window.self ); // Window {…}
console.log( self.window.self.window ); // Window {…}
console.log( this.this ); // undefined