代码之家  ›  专栏  ›  技术社区  ›  Nick Heiner

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

  •  1
  • Nick Heiner  · 技术社区  · 14 年前

    我不完全确定如何在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: 看来斯宾农和罗斯卡姆的评论是正确的。当我试图评估它时,其中一个args正在悄悄地失败。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Russ Cam    14 年前

    最后一个逗号后面有一个尾随逗号 arg 这将给JavaScript引擎带来问题。

    另外,最好用 var 在前面 FOO_LIST ,即使它有意是一个全局变量,因为这是一个很好的习惯,可以用于所有变量声明,并避免将来在重写全局变量时出现潜在问题。

    对于具有许多这样参数的函数的情况,您可能希望使用 arguments 对象并对其进行索引以获取args 1-7。