The Function
prototype contains all methods and properties of a function
the specified methods and props
const ownPropertyNames = Object.getOwnPropertyNames(Function.prototype);
['length', 'name', 'constructor', 'apply', 'bind', 'call', 'toString']
.forEach(name => assert(ownPropertyNames.includes(name), `Failed to find "${name}".`));
the old/deprecated/inofficial methods and props
const ownPropertyNames = Object.getOwnPropertyNames(Function.prototype);
['arguments', 'caller']
.forEach(name => assert(ownPropertyNames.includes(name), `Failed to find "${name}".`));
Links
spec
docs
The very first version of the spec defines this property already, the ES1 spec, see section 15.3.4 (PDF 732kB).