我不太确定如何在JS中实现对象。

这是一个构造函数:

function FooList(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
{
    alert("constructing");
    this._arg1 = arg1;
    this._arg2 = arg2;

    this.refresh();
}


我想在这里称呼它:

FOO_LIST = new FooList(
    arg1,
    arg2,
    arg3,
    arg4,
    arg5,
    arg6,
    arg7
);


当我拥有所有7个参数时,它不起作用。 (没有构造函数中的断点命中;并且不会触发警报。此外,包含以上代码的方法将停止执行。)

但是,这确实会导致警报触发:

FOO_LIST = new FooList();


我在这里做错了什么?

更新也许这是定义构造函数的更好方法:

FooList = function() { }


而不是

function FooList() { }


但是,即使使用前一种方法,也仍然无法正常工作。

更新2:看起来Spinon和Russ Cam的评论是正确的。当我尝试评估时,其中一个args默默地失败了。

最佳答案

最后一个arg之后是逗号,这将导致JavaScript引擎出现问题。

此外,最好是在var之前使用FOO_LIST,即使它故意是全局变量,因为这是养成所有变量声明并避免全局变量覆盖潜在问题的好习惯在未来。

对于您的函数具有诸如此类的许多参数的情况,您可能需要使用arguments对象并对其进行索引以获得args 1-7。

10-08 13:00