私の「固定長」の例はうまくいきます。
現在、配列で定義するブラシの配列(ヒストグラムに使用)があります。
var brushFunctionArray = [brush0,brush1,brush2];
ヒストグラム ループを使用してヒストグラムを作成し、使用するブラシごとに次のようにします。
var brush = d3.svg.brush()
.x(x)
.on("brush", brushFunctionArray[i]);
そして、ブラシを次のように定義します。
function brush0 () {brushmove(0);}
function brush1 () {brushmove(1);}
function brush2 () {brushmove(2);}
次に、brushmove の定義を 1 つ用意します。
function brushmove(index){
...
...
}
これはうまくいきます。しかし、実行時に配列を固定長(ブラシ0 ...ブラシB)を超えて移動できるようにしたいと考えています。関数を動的に作成しようとしました:
var brushFunctionArray = [];
for (var i = 0; i < numOfHistograms; i++){
var func = new Function("return function brush" + i + " () {brushmove("+i+");}")();
brushFunctionArray.push(func);
}
これにより関数が作成され、配列に挿入されますが、関数の名前ではなく関数がそこにあるため、以前のように .on("brush",..) で brushFunctionArray を使用することはできません。さらに、関数を配列に入れると、初期化されなくなりました。
ご提案ありがとうございます。