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我收到了与你的新建议相同的警告(没有双关语)