Javascript在简单对象中的奇怪构造?
非常简单的代码:Javascript在简单对象中的奇怪构造?,javascript,Javascript,非常简单的代码: var t = new function () //line 1 { this.a1 = function () { return function () { alert("1"); }; }(); this.a2 = function () { alert("a2"); }; }; //li
var t = new function () //line 1
{
this.a1 = function () {
return function () {
alert("1");
};
}();
this.a2 = function () {
alert("a2");
};
}; //line 16
t.a1();
但是jsBin下面的红线告诉我:
第1行:var t=new函数()---奇怪的构造。删除“新建”
第16行:};--缺少调用构造函数的“()”
代码运行良好
我做错了什么?试试这个:
var t = function () //line 1
{
this.a1 = function () {
return function () {
alert("1");
};
}();
this.a2 = function () {
alert("a2");
};
}; //line 16
var x = new t();
x.a1();
如果您要编写一个“匿名类型”,相当于:
var _anonymous_type = function () {
...
}
var t = new _anonymous_type();
你应该:
var t = new (function () {
...
})();
看到与代码的区别了吗?:) 在我的Firefox/Chrome中运行良好。你在哪个浏览器上遇到麻烦?@munimjsbin红线吼叫……我编辑过。请看链接。谢谢。@Munim它有两个警告。看这个问题:@Hristo你到底是怎么发现的??)谢谢,我会看看的。我也能做到。。。。但我的代码在语法上很好。我看不出它不起作用的任何原因……从技术上讲,
var t=new function()…
没有什么问题,但是没有一个好的理由这样做。因此出现了奇怪的构造函数。第二个构造函数只是第一个构造函数的内联。。。为什么这会被认为是错误的?@Jeffrey Zhao我收到了与你的新建议相同的警告(没有双关语)