I'll go ahead and elaborate on my answer on idbehold's question:
I would say that you probably want to use filters with type 5 (peaking), which lets all frequencies through and only amplifies/reduce at the frequency at which you've set the respective filter.frequency.value. That lets you connect the filters in series so you don't need separate audio paths. You could also consider using a low-shelf filter as the first filter, and a hi-shelf filter as the third, which is rather common in 3-band equalizers.
If you go with the peaking filters in series, you don't need a separate gain node for each frequency, you just set the filter.gain.value for the specific filters.
The code would look something like this:
var lowshelf = context.createBiquadFilter(),
mid = context.createBiquadFilter(),
highshelf = context.createBiquadFilter();
//set the filter types (you could set all to 5, for a different result, feel free to experiment)
lowshelf.type = 3;
mid.type = 5;
highshelf.type = 4;
//connect 'em in order
yourInput.connect(lowshelf);
lowshelf.connect(mid);
mid.connect(highshelf);
highshelf.connect(yourOutput);
You can then adjust each band with their respective Q, frequency and gain values (check https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#BiquadFilterNode to see which params works with which filter type), for example:
lowshelf.gain.value = 0.6;
lowshelf.frequency.value = 300;
EDIT:
To add a separate gain, just do
var gainNode = context.createGainNode();
and then either do
gainNode.connect(lowshelf); //pre EQ
or
highshelf.connect(gainNode); //post EQ
depending on whether you want it post or pre the EQ. You control the gain by doing
gainNode.gain.value = 0.6;