2.1.59 [ECMA-262-1999] Section 15.3.4. Properties of the Function Prototype Object

V0093:

The Function prototype object is itself a Function object (its [[Class]] is "Function") that, when invoked, accepts any arguments and returns undefined.

The value of the internal [[Prototype]] property of the Function prototype object is the Object prototype object ([ECMA-262-1999] section 15.3.2.1).

It is a function with an "empty body"; if it is invoked, it merely returns undefined.

The Function prototype object does not have a valueOf property of its own; however, it inherits the valueOf property from the Object prototype Object.

From the above specification language it is unclear whether or not the Function prototype object has all the properties of a Function instance as described in [ECMA-262-1999] section 15.3.5. In addition, [ECMA-262-1999] section 15 states: "None of the built-in functions described in this section shall implement the internal [[Construct]] method unless otherwise specified in the description of a particular function. None of the built-in functions described in this section shall initially have a prototype property unless otherwise specified in the description of a particular function." The Function prototype object is itself such a built-in function.

In JScript 5.x the Function prototype object does not have a prototype property. It also does not have [[Construct]] or [[HasInstance]] properties. Because of the lack of these properties applying the new operator to the Function prototype object or using the Function prototype object as the right hand operand of the instanceof operator throws a TypeError exception.