以下のコードのようなWebオーディオAPIノードのバッチがあります。これを単純なコンストラクターに抽象化したいのですが、問題が発生しています。何が間違っているのかわかりません。最終結果は次のようになります
function filterTemplate(name,freqVal){
this.name = context.createBiquadFilter();
this.name.type = 5;
this.name.gain.value = null;
this.name.Q.value = 1;
this.name.frequency.value = this.freqVal; // freqVal is here
}
関数を呼び出すと:
var filter = new filterTemplate("theName",200); //Uncaught TypeError: Cannot call method 'createBiquadFilter' of undefined
メソッドを次のように変更すると、エラーが削除されます
this.name = function(){return context.createBiquadFilter()};
しかし、その後、さまざまなプロパティ値に対して別のエラーが発生します
//Uncaught TypeError: Cannot set property 'value' of undefined
組み込みのブラウザーメソッドとプロパティを使用してバニラコンストラクターを作成する適切な方法について、私は本当に混乱しています。
以下のコードを抽象化して、上記のコードのようにしたいと思います
filter1 = context.createBiquadFilter();
filter1.type = 5;
filter1.gain.value = null;
filter1.Q.value = 1;
filter1.frequency.value = 80; // Changes
filter2 = context.createBiquadFilter();
filter2.type = 5;
filter2.gain.value = 0;
filter2.Q.value = 1;
filter2.frequency.value = 240; // Changes
filter3 = context.createBiquadFilter();
filter3.type = 5;
filter3.gain.value = 0;
filter3.Q.value = 1;
filter3.frequency.value = 750; // Changes
filter4 = context.createBiquadFilter();
filter4.type = 5;
filter4.gain.value = 0;
filter4.Q.value = 1;
filter4.frequency.value = 2200; // Changes
filter5 = context.createBiquadFilter();
filter5.type = 5;
filter5.gain.value = 0;
filter5.Q.value = 1;
filter5.frequency.value = 6000; // Changes