Eso se debe a que los string (junto con los números y los booleanos) son un tipo de dato primitivo, y no les puedes añadir propiedades/métodos a no ser que uses el constructor. Sin embargo, a los arrays, regexps, dates, functions... sí. Ej:
Código Javascript
:
Ver originalvar a = 'String literal';
a.b = 'Esto no va funcionar...';
var a = new String('String con el constructor');
a.b = 'Esto sí se ve';
var arr = []; // Array literal
arr.prop = 'Esto funciona aunque sea un array literal, porque no es un tipo de dato primitivo';
Saludos (: