String objects are wrappers for the string primitives.
Strings are immutable in Javascript. The wrapper object obviously isn't but whenever you apply the dot operator to a string primitive, it get's casted to an object, the method is applied and a _new_ primitive is returned.
Interface:
String([string:string|mixed])
new String([string:string|mixed])
int String.length = 1
string String.fromCharCode([char0[, char1[, ... ]]])
String.prototype
String.prototype.constructor
string String.prototype.toString()
string String.prototype.valueOf()
string String.prototype.charAt(pos:int|mixed)
uint String.prototype.charCodeAt(pos:int|mixed)
string String.prototype.concat([string1:string|mixed[, string2:string|mixed[, ... ]]])
int String.prototype.indexOf(searchString:string|mixed, position:uint|mixed)
int String.prototype.lastIndexOf(searchString:string|mixed, position:uint|mixed)
int String.prototype.localeCompare(that:string|mixed)
array|boolean String.prototype.match(regexp:regexp|mixed)
string String.prototype.replace(searchValue:string|mixed, replaceValue:string|mixed)
int String.prototype.search(regexp:regexp|mixed)
string String.prototype.slice(start:uint|mixed, end:uint|mixed)
array String.prototype.split(separator:string|mixed, limit:uint|mixed)
string String.prototype.substring(start:int|mixed, end:int|mixed)
string String.prototype.toLowerCase()
string String.prototype.toLocaleLowerCase()
string String.prototype.toUpperCase()
string String.prototype.toLocaleUpperCase()
string String.prototype.trim()