Pseudo code:
var F = new [[Function]], proto = new Object();
proto.defineProperty('constructor', {
value: F,
writable: true,
enumerable: false,
configurable: true
});
F.defineProperty('prototype', {
value: proto,
writable: true,
enumerable: false,
configurable: false
});
NOTE A prototype property is automatically created for every function, to allow for the possibility that the function will be used as a constructor.