@creatoroftheworld

Как на лету преобразовывать строку в объект, как при использовании нативных методов?

Наверно неправильно сформулировал вопрос..
Например, мне часто надо выполнять какую-то операцию со строками.
Такой подход известен:
str = someAction(str)
А хотелось бы вот так:
str = str.someAction()
(не привязывая someAction к объекту str)
Нативный метод, например toUpperCase, сам преобразует строку в объект и возвращает строку, даже при такой записи
'строка'.toUpperCase()
Как сделать так, чтобы мною прописанные методы работали так же?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 3
@kidar2
String.prototype.someAction = function()
{
return this.toUpperCase();
}
Ответ написан
Один из вариантов - добавить методы в String.prototype.
String.prototype.doSmth = function() { console.log('test'); };
var t = new String('q');
var t2 = 'abcd';
t2.doSmth(); \\ test
t.doSmth(); \\ test
'abcd'.doSmth() \\ test

Но вообще говоря так делать не очень хорошо.
Лучше сделайте свой объект, например
function MyString(str) {
    var self = this;
    self.str = str;
}

И в него добавьте все нужные вам методы.
Тогда вызов вашего метода превратится из
'строка'.toUpperCase()
в 
new MyString('cтрока').myMethodName()

Вот пример создания класса, который наследует прототип от String: gist
Ответ написан
romy4
@romy4
Exception handler
Вам смотреть prototype в javascript
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы