String-Objekt versus Literal - Modifizieren des Prototyps?

Ich frage mich, warum es so aussieht, als würde das Hinzufügen einer Methode zum Prototyp eines String-Literal funktionieren, das Hinzufügen einer Eigenschaft jedoch nicht? Ich habe mit Ideen in Bezug auf @ gespiediese Frag und haben den folgenden Code:

String.prototype._str_index1 = 0;
String.prototype._str_reset = function() {
    this._str_index1 = 0;
};
String.prototype._str_substr = function(len) {
  var ret = this.substr(this._str_index1, len);
  this._str_index1 = this._str_index1 + len;
  return ret;
};

var testString = new String('Loremipsumdolorsitamet,consectetur');
log(testString._str_substr(5));
log(testString._str_substr(4));
​

Dies funktioniert gut. Wenn ich aber die drittletzte Zeile ändere auf:

var testString = 'Loremipsumdolorsitamet,consectetur';

... es scheint, dass obwohl die Methode_str_substr existiert und kann über das String-Literal aufgerufen werden, den Wert der Eigenschaft_str_index1 ist immer 0.

Was geht