Этот вопрос закрыт для ответов, так как повторяет вопрос Наследование от 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

В чем может быть проблема?
  • Вопрос задан
  • 193 просмотра
Решения вопроса 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 работает.
Ответ написан
Ваш ответ на вопрос

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

Потому что уже есть похожий вопрос.
Похожие вопросы
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект