Сценарий, который я не могу контролировать или удалить, решил переопределить поведение по умолчанию метода Date.prototype.setFullYear
.Это вызывает проблемы для нескольких библиотек, таких как date-fns
, от которых в значительной степени зависит наш код.
Есть ли какой-либо способ "сбросить" функцию Date.prototype.setFullYear
на исходное поведение?Не имеет значения, работает ли скрипт, который модифицировал прототип, впоследствии или нет - мне не нужно, чтобы он работал, я просто не могу его легко удалить.
Обновление:
Сценарий, вызывающий проблемы, является одним из многих, связанных с платформой Jira Core 7.13.3, который загружается на все страницы.Он называется calendar-lib
и вызывает проблемы при разработке плагинов на платформе.
Поскольку calendar-lib
является частью базовой установки Jira, мы не можем контролировать порядок загрузки;нарушающий скрипт всегда будет загружаться первым - насколько я знаю.
Как и предположил @Jonas, выясняется, что нативный метод хранится в переменной с именем Date.prototype.__msh_oldSetFullYear
, которая, возможно, может бытьиспользуется сбросить глобальное поведение с помощью ответа @ Haseeb.
Обновление 17.06.19:
Эта проблема теперь подтверждена командой разработчиков Jira: https://jira.atlassian.com/browse/JRASERVER-69491
Решение:
Как отметили @Jonas и @Rob в комментариях, установка следующего утверждения в начальной точке нашего приложения решила проблему:
Date.prototype.setFullYear = Date.prototype.__msh_oldSetFullYear;
Где Date.prototype.__msh_oldSetFullYear
- нативная реализация (к счастью), хранящаяся и раскрываемая нарушающим кодом calendar-lib
.
Было много действительно хороших предложений вкомментарии ниже, поэтому обязательно ознакомьтесь с ними, если вы находитесь в аналогичной ситуации.
Спасибо!