2010-07-04 89 views
1

我不完全確定如何在JS中實現對象。JavaScript:這個構造函數有什麼問題?

這裏是一個構造函數:

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() { } 

然而,即使採用前一種方法,但它仍然無法正常工作。

UPDATE 2:看起來像Spinon和Russ Cam的評論是正確的。當我試圖評估它時,其中一個參數默默無聞。

+0

是否定義了變量'arg1-7'? – 2010-07-04 21:36:35

+0

當你使用7個參數時,你作爲參數傳遞了什麼? – Tarantula 2010-07-04 21:38:05

+0

@felix是的,他們和@tarantula:jquery對象,字符串和回調。 – 2010-07-04 21:39:21

回答

2

在最後的arg後面會出現尾隨逗號,這會導致JavaScript引擎出現問題。

另外,最好在FOO_LIST之前使用var,即使它是故意爲全局變量的,因爲這是一種很好的習慣,可以用於所有變量聲明並且可以避免潛在的全局變量覆蓋問題在未來。

對於像這樣有很多參數的函數的情況,您可能需要使用arguments對象並將其索引以獲取參數1-7。

+0

對不起,這是我自己的錯字輸入到頁面中。 – 2010-07-04 21:38:04

+0

你可以在上下文中顯示整個代碼嗎? – 2010-07-04 21:46:18

+0

當你沒有向我們展示正在運行的代碼時,詢問「爲什麼不用這個代碼」,這不是解決問題的好方法。當示例代碼適用於正在嘗試提供幫助的人時,更是如此;) – Gareth 2010-07-04 22:29:37