this is one of the most innovative features introduced by javascript. inferior class-based languages have been plagued by a redundant self argument in functions; this is both pointless and error-prone. plus, self is a shitty variable name anyway.
this, however, is an elegant concept; the runtime can decide on the object to use without programmers being bothered to specify it themselves. this increases productivity, enhances readability, and guarantees good behavior