Я не думаю, что код делает то, что вы думаете, он делает. Попробуйте это так:
var greetings = new SayHello;
alert('calling the constructor');
greetings();
function SayHello() {
alert("Hello");
};
Сначала вы увидите "Hello" предупреждение, а затем "вызов конструктора" предупреждение, которое, я думаю, противоположно тому, что вы ожидаете. Оператор new
вызывает конструктор и генерирует предупреждение. Строка greetings()
фактически выдает ошибку типа, поскольку в этот момент приветствия являются просто объектом (экземпляр SayHello). Я предполагаю (так как у меня нет копии), что IE6 просто не вызывает конструктор, когда круглые скобки отсутствуют, поэтому он кажется сломанным по-другому.