There are two active proposals for what to do with the reserved word "super", [object initialiser super][] and [classes][]. Both proposals limit the context in which "super" can appear. This proposal attempts to allow "super" anywhere by basing it's behavior on ThisBindings.
Execution contexts are updated to have a SuperBinding similar to the existing ThisBinding. The keyword "super" by itself evaluates to the value of the SuperBinding of the current execution context. Direct function calls, e.g. f() or f.call(this, arg), result in a SuperBinding of the [[Prototype]] internal property of the passed ThisBinding or undefined it the ThisBinding is not an object. Method calls, e.g. o.m(), and accessor property access, e.g. o.p where "p" is an accessor property somewhere in o's property lookup chain (own properties plus prototype chain), result in a SuperBinding which is the [[Prototype]] internal property of the object in o's property lookup chain on whic