Есть код стороннего разработчика: Typescript, Angular. В этом коде нужно откорректировать формат вывода некоторых не примитивных данных, представленных объектами классов (например встроенный тип Date). Вывод полей осуществляется методом toString() этих объектов.
Можно ли произвести перегрузку метода в чужом классе Typescript (Javascript), например Date.toString()?
Да, можно переопределить метод и вызывать базовый (или даже не вызывать):
class MyDate extends Date {
toString() {
return 'my: ' + super.toString();
}
}
md = new MyDate();
md.toString(); // my: Tue May 29 2018 10:16:20 GMT+0300 (RTZ 2 (зима))
В большинстве случаев можно переписать конкретный метод объекта, либо прототипа обычным присваиванием.
var d = new Date();
d.toString = function() {
return "custom date: " + this.getDate();
}
console.log(d.toString());
Date.prototype.toString = function() {
return "custom prototype date: " + this.getDate();
}
console.log(new Date().toString());
Однако это не всегда возможно, и для самого объекта и для его прототипа можно быть запрещено изменение какого-то конкретного свойства и в этом случае ничего сделать не получится.
Так как речь про сторонний код, то возможно в нем может существовать настройка формата, либо, как крайний случай, поменять нужный сторонний код, так как расширение прототипов встроенных объектов может повлиять на другие части.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости