2.4.4.3 The [[Get]] (P) Method of a Function Object
Assume F is a Function object.
When the [[Get]] method of F is called with value P, the following steps are taken:
1. If P is not the string 'arguments' then go to step 6.
2. If an active execution context for F does not exist, go to step 13.
3. Let X be the most recently created active execution context for F.
4. If X is marked as having a partially accessible arguments object, let A be the original arguments object for X; otherwise, let A be the value of the property named 'arguments' of X’s variable object.
5. Return A.
6. If P is not the string 'caller', go to step 13.
7. Let X be the most recently created active execution context for F.
8. If X does not have an execution context to which it could normally exit, return null.
9. Let R be the execution context which would become the current execution context if X exited normally (not via an exception).
10. If R is an execution context for a built-in function or a host object function, return null.
11. If R is an execution context for global code or for eval code, return null.
12. R must be an execution context for function code, so return the function object with the call that caused R to be created.
13. Return the result of calling the default [[Get]] method ([ECMA-262-1999] section 8.6.2.1) passing P as the argument.
Note: JScript 5.x under Internet Explorer 9 marks the current execution context as having a partially accessible arguments object when the function’s FormalParameterList contains the name 'arguments' or the function’s FunctionBody contains a direct reference to the function’s original arguments object or the function’s FunctionBody contains a direct call to eval.
JScript 5.x under Internet Explorer 7 or 8 marks the current execution context as having a partially accessible arguments object when the function’s FormalParameterList contains the name 'arguments'.