JavaScript:这个构造函数有什么问题?

时间:2010-07-04 21:32:05

标签: javascript oop constructor

我不完全确定如何在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个args时,它不起作用。 (命中构造函数中没有断点;警报不会触发。此外,包含上述代码的方法也会停止执行。)

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

FOO_LIST = new FooList();

我在这里做错了什么?

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

FooList = function() { }

而不是

function FooList() { }

然而,即使使用前一种方法,它仍然无效。

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

1 个答案:

答案 0 :(得分:2)

在最后arg之后你有一个尾随的逗号,这会导致JavaScript引擎出现问题。

此外,最好在var前面使用FOO_LIST,即使它是故意的全局变量,因为这是一个很好的习惯,可以进入所有变量声明并保存你来自未来全球变量覆盖的潜在问题。

对于具有许多类似参数的函数的情况,您可能希望使用arguments对象并将其编入索引以获取参数1-7。