为什么括号必须在新函数后立即跟随? MSDN网站不清楚为什么这是一个错误。
// Fails but only in IE6
var greetings = new SayHello;
greetings();
// This works in IE6
var salutations = new SayHello();
function SayHello() {
alert("Hello");
};
答案 0 :(得分:1)
我认为代码不会按照您的想法执行。试试这种方式:
var greetings = new SayHello;
alert('calling the constructor');
greetings();
function SayHello() {
alert("Hello");
};
您将首先看到“Hello”警报,然后是“调用构造函数”警报,我认为这与您的预期相反。 new
运算符正在调用构造函数并生成警报。 greetings()
行实际上会抛出一个类型错误,因为此时问候只是一个对象(SayHello的一个实例)。我猜测(因为我没有副本)IE6只是在括号丢失时没有调用构造函数,所以它似乎以不同的方式被破坏了。