2017-09-23 8 views
1

たとえば、2つの配列を使用する関数を作成しています。どのように私はそれを二番目の配列を渡して、二つの配列またはArray方法としてそれを渡して、グローバル関数としてそれを呼び出すために、この関数を定義することができます。同時にグローバル関数とメソッド

func([1, 2, 3], [3, 2, 1]); 
[1, 2, 3].func([3, 2, 1]); 

ここでは私の考えです:

func = function (...args) { // define global function 
    if (args.length > 1) { 
     // function called as global with 2 arrays in arguments 
    } else { 
     // function called as Array method, with second array in arguments 
    } 
} 
Array.prototype.func = func; // define Array method 

ですもっと良い方法がありますか?おかげさまで

+1

'[1、2、3] .funcのような呼び出しがあったとしても、 2,1]、[4,5,6])。代わりに、 'this'が配列かどうかをテストすることができます... – nnnnnn

答えて

0

あなたはおそらくプロトタイプのためのラッパー関数を作成することができます。

func = function (a,b) { // define global function 
    // will always have a,b defined 
} 
Array.prototype.func = function (b){ func(this,b) }; // define Array method 

この方法で、それはあなたの関数には、任意の違いを確認doesntの。 (あなたの関数が正確に2つの引数を期待していると仮定します)

関連する問題