Мне интересно, почему кажется, что добавление метода к прототипу строкового литерала, похоже, работает, но добавление свойства не происходит? Я играл с идеями относительно этого вопроса и имел следующий код:
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));
Это прекрасно работает. Если, однако, я изменяю третью последнюю строку на:
var testString = 'Loremipsumdolorsitamet,consectetur';
... кажется, что хотя метод _str_substr
существует и может быть вызван в строковом литерале, значение свойства _str_index1
всегда равно 0.
Что?