Почему библиотека chart.js перестает работать, если я изменяю object.prototype?

Если я изменю Object.prototype, казалось бы, безобидным способом (просто добавив к нему любое свойство), библиотека Chart.js даже не сможет загрузить:

<script>
    Object.prototype.someNewProperty='some value'
</script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js'></script>

У меня в консоли ошибка: Uncaught TypeError: Cannot read property '1' of null.

Если убрать строчку Object.prototype.someNewProperty='some value', все будет нормально.

В чем источник проблемы? Как Chart.js узнает, что я изменил Object.prototype и как эта модификация предотвращает загрузку библиотеки?

Что ж, только не нарушайте глобальную среду. То, что вы делаете, небезобидно. Chart.js (как и многие другие библиотеки) разумно предполагает, что в Object.prototype нет перечислимых свойств.

Bergi 11.04.2018 14:03

Спасибо, совет по Object.defineProperty действительно полезен!

Grigory Hatsevich 11.04.2018 17:27
0
3
64
0

Другие вопросы по теме