You can't "defend" your code, period. Not front-end code at least. Go ahead and minify and obfuscate it all you want (or add domain or date protections) ... anyone with minimal knowledge and a little effort will walk right around that in no time...
I do not agree completely with "anyone with minimal knowledge and little effort". That is the true with some obfuscators, basically because they suck.
However, I dont think that we should put them all in the same bag. Consider this example for instance:
http://jsfiddle.net/JScrambler/5ujp3/
It has anti-tampering and other stuff in it.
I REALLY don't think it requires minimal knowledge and little effort to hack it.