2.1.21 [ECMA-262-1999] Section 10.1.8, Arguments Object

V0034:

When control enters an execution context for function code, an arguments object is created and initialised as follows:

  • The value of the internal [[Prototype]] property of the arguments object is the original Object prototype object, the one that is the initial value of Object.prototype (see [ECMA-262-1999] section 15.2.3.1).

  • A property is created with name callee and property attributes { DontEnum }. The initial value of this property is the Function object being executed. This allows anonymous functions to be recursive.

  • __A property is created with name caller and property attributes { DontEnum }. Let C be the execution context that performed the call that caused the current execution context to be entered. The initial value of the caller property is null if C is an execution context for global code, eval code, or a built-in or host function object. Otherwise C is an execution context for function code and the initial value of the caller property is arguments object that was created when C was entered.__