Как продлить основные типы JavaScript (String, Date и т.д.) без изменения их прототипов? Например, предположим, что я хотел создать производный строковый класс с некоторыми удобными методами:
function MyString() { }
MyString.prototype = new String();
MyString.prototype.reverse = function() {
return this.split('').reverse().join('');
};
var s = new MyString("Foobar"); // Hmm, where do we use the argument?
s.reverse();
// Chrome - TypeError: String.prototype.toString is not generic
// Firefox - TypeError: String.prototype.toString called on incompatible Object
Похоже, что ошибка исходит из базовых методов String, возможно, "split" в этом случае, поскольку ее методы применяются к некоторому нестроковому объекту. Но если мы не можем применить к нестрочным объектам, то можем ли мы их повторно использовать автоматически?
[изменить]
Очевидно, моя попытка испорчена многими способами, но я думаю, что это демонстрирует мое намерение. После некоторого размышления кажется, что мы не можем повторно использовать любую из объектов объектных объектов String без явного вызова их на String.
Возможно ли распространять основные типы как таковые?