2011-12-05 180 views
1

我使用一些JavaScript庫來繪製圖表。 它需要傳遞座標到數組初始化器的數組。 但是圖表初始化函數有一個簽名看起來像新函數([arr1],[arr2],[arr3]),但我不知道我會傳入多少數組,但不可能將它初始化爲另一個數組辦法。如何才能解決這個問題? 謝謝。將未知數的參數傳遞給js構造函數

UPD:調用的函數是構造函數,所以它不能正常工作應用。 問題是如何來傳遞數據,但不知道如何獲得通過數據

的計數
+0

什麼JavaScript的LIB您使用的? –

+0

可能重複[Javascript未知數量的參數](http://stackoverflow.com/questions/6442371/javascript-unknown-number-of-arguments) –

+0

我很難理解你在問什麼(即使與更新)。你是說初始化函數是庫的一部分,所以你不能控制它的工作方式,它期望三個參數是數組,你不知道要傳遞什麼?你能更清楚地知道你所擁有的數據嗎?如果您傳遞空數組或空值代替沒有值的參數,會發生什麼情況? – nnnnnn

回答

5

SOLUTION的功能:它可以使用適用於構造函數,但它需要以下解決方法:

function construct(constructor, args) { 
    function F() { 
     return constructor.apply(this, args); 
    } 
    F.prototype = constructor.prototype; 
    return new F(); 
} 
+0

在構造函數中'this'變量將是'F'函數實例 –

2

您可以使用內置的名爲arguments變量,它是傳遞給函數的參數和arguments.length類似陣列的對象,以確定如何許多論點都通過了。有關更多信息,請參閱此MDN reference

function myFunc() { 
    for (var i = 0; i < arguments.length; i++) { 
     // you can process arguments[i] here 
    } 
} 

如果你想傳遞一個可變數量的參數,你可以使用.apply()。您構建一個參數數組,並將其作爲第二個參數傳遞給應用。第一個參數是你想要的this指針設置爲。這裏的MDN reference.apply()

var myArgs = [arr1, arr2, arr3]; 
myFunc.apply(window, myArgs); 
0

您想使用arguments對象。它基本上是一個數組類對象,其中包含所有參數。您可以使用它像這樣:

function yourFunction() { 
    for (var i = 0, len = arguments.length; i < len; i++) { 
     console.log(arguments[i]); //That's the argument you passed in. 
    } 
} 

Demo

0

功能是接受可變數量的參數被稱爲可變參數功能。 在JavaScript中,您可以使用arguments對象來訪問參數。要調用你也可以使用.call.apply

相關問題