Hard mode: write a nontrivial program the intersection of javascript and brainfuck (no characters except []+-,.<>), which does the same thing in both languages.
Brainfuck interpreters just ignore the characters in the file that aren't those particular Brainfuck operators, treating them as comments. So, you could just write a Brainfuck interpreter in JavaScript that interprets a string literal, then write the Brainfuck program as a string literal. You'd still have to write the JavaScript BF interpreter so that everything that isn't the string literal has no observable effect when interpreted by a BF interpreter.
put the interpreter into a function placed in an array at the beginning. use an array constructor for this and your whole interpreter is now wrapped by a bf loop at the start of the program. Which bf will immediately skip tecause the initial cell will be 0. Then index into an array to get the first item. Another loop on the initial cell. Skipped. Then pass the bf source to the function. No brainfuck commands are needed for this.
<pre><code> [ function(src){
// interpreter goes here
} ][[]]("brainfuck source goes here");
</code></pre>So your interpreter could be anything you want and it won't conflict with any other bf code as long as you keep your square brackets matched up (this is easy to do in js).
The rest is, of course, an exercise left to the reader.