Правильная цепочка прототипов для функции

Каков правильный вывод (то есть правильный в стандарте ECMA) следующей программы?

function nl(x) { document.write(x + "<br>"); }
nl(Function.prototype);
nl(Function.prototype.prototype);
nl(Function.prototype.prototype == Object.prototype);
nl(Function.prototype.prototype.prototype);

Chrome и IE6 согласны в том, что:

function Empty() {}
null for Chrome / undefined for IE6
false

а затем сбой.

Выходы Mozilla:

function () { }
[object Object]
false
undefined

Правильны ли они? Кажется, что Mozilla делает лучше, но что лучший выход

function () { }
[object Object]
true
undefined

Ответы на вопрос(4)

Ваш ответ на вопрос