Почему IE6 выдает ошибку «Ожидается функция» при объявлении переменной как нового экземпляра объекта функции? - PullRequest
0 голосов
/ 26 января 2011

Почему скобки должны следовать сразу после новой функции? На сайте MSDN было неясно, почему это ошибка.

// Fails but only in IE6
var greetings = new SayHello;
greetings();

// This works in IE6
var salutations = new SayHello();

function SayHello() {
 alert("Hello");
};

1 Ответ

1 голос
/ 26 января 2011

Я не думаю, что код делает то, что вы думаете, он делает. Попробуйте это так:

var greetings = new SayHello;
alert('calling the constructor');
greetings();

function SayHello() {
 alert("Hello");
};

Сначала вы увидите "Hello" предупреждение, а затем "вызов конструктора" предупреждение, которое, я думаю, противоположно тому, что вы ожидаете. Оператор new вызывает конструктор и генерирует предупреждение. Строка greetings() фактически выдает ошибку типа, поскольку в этот момент приветствия являются просто объектом (экземпляр SayHello). Я предполагаю (так как у меня нет копии), что IE6 просто не вызывает конструктор, когда круглые скобки отсутствуют, поэтому он кажется сломанным по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...