Ну решение есть:
function F() {
if (this.constructor == F) {
if (this._constructed) {
alert("F.call(new F)");
return null;
}
this._constructed = true;
return this;
}
return null;
}
new F;
F.call(new F);
F.call({});
F();
Просто может я торможу и еще как-то проще/лучше/надежнее можно сделать. Не очень хочется иметь ненужное enumerable-свойство в каждом объекте.