EIBTI for Javascript: explicit is better than implicit
Javascript's "prototype" driven nature allows programmers to alter the behavior of built-in types thusly:
String.prototype.isEmpty = function() { return /^\s+$/.test(this); }
Just because you can, doesn't mean you should though. For instance, a method you add to String's prototype might require two arguments, but a future update to the language itself might add the very same method with the arguments reversed.
Consider this alternative:
function FormValue(str) { this.str = str}
FormValue.prototype.isEmpty = function() { return /^\s+$/.test(this.str); }
var test = new FormValue(" ");
Note you must explicity instantiate a FormValue instance, rather than implicitly operating on a String (primitive). Consider this a feature. For instance, Python has popularized the acronym EIBTI, or "explicit is better than implicit." No wonder MochiKit, "a production-quality framework that brings powerful and well-known Python idioms to JavaScript," rightfully leaves String.prototype alone.