Этот вопрос закрыт для ответов, так как повторяет вопрос Наследование от Date?
@Coder321

Как сделать наследование базового класса?

Пытаюсь создать свой класс который будет наследоваться от String, но есть проблемки.
Такой вариант работает в браузере но не работает в React Native
class MyString extends String { }
но почему то такой вариант не работает ни где
function MyString() { }
MyString.prototype = Object.create(String.prototype)

Ошибка выскакивает такая:
Uncaught TypeError: String.prototype.toString requires that 'this' be a String

В чем может быть проблема?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Есть такое. Опера, например, кричит:
Unhandled Error: String.prototype.toString: this is not a String object

Согласно спецификации toString кидает исключение, если this не является строкой, то есть грубо
String.prototype.toString = function() {
  if (typeof this === 'string')
    return this.valueOf();
  else
    throw new TypeError();
};

Чтобы можно было наследовать от String, нужно переопределить метод.

P.S. я не могу объяснить, почему код с extend работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы
Quasar Software Москва
от 120 000 до 170 000 руб.
YLab Тольятти
от 70 000 до 130 000 руб.
Leningrad Media Санкт-Петербург
от 60 000 руб.
17 авг. 2018, в 11:42
21000 руб./за проект
17 авг. 2018, в 11:12
1000 руб./в час
17 авг. 2018, в 11:09
35000 руб./в месяц