@creatoroftheworld

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

Наверно неправильно сформулировал вопрос..
Например, мне часто надо выполнять какую-то операцию со строками.
Такой подход известен:
str = someAction(str)
А хотелось бы вот так:
str = str.someAction()
(не привязывая someAction к объекту str)
Нативный метод, например toUpperCase, сам преобразует строку в объект и возвращает строку, даже при такой записи
'строка'.toUpperCase()
Как сделать так, чтобы мною прописанные методы работали так же?
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
Один из вариантов - добавить методы в 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
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@kidar2
String.prototype.someAction = function()
{
return this.toUpperCase();
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Санкт-Петербург
от 160 000 до 220 000 ₽
06 мар. 2021, в 02:23
120000 руб./за проект
06 мар. 2021, в 00:29
500 руб./за проект
05 мар. 2021, в 23:28
1200 руб./за проект