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

Предположим, что наш скрипт включен в веб-страницу, а предыдущий скрипт (который уже выполнялся) делал следующее:

String.prototype.split = function () {
    return 'U MAD BRO?';
};

Итак, метод split строки был перезаписан.

Мы хотели бы использовать этот метод, поэтому нам нужно как-то восстановить его. Конечно, мы могли бы просто определить собственную реализацию этого метода и использовать ее вместо него. Однако в рамках данного вопроса предположим, что мы действительно хотим восстановить реализацию этого метода в браузере.

Итак, браузер имеет реализацию метода split (в родном коде, я полагаю), и эта реализация присваивается String.prototype.split всякий раз, когда загружается новая веб-страница.

Нам нужна эта реализация! Мы хотим вернуть ее в String.prototype.split.

Сейчас я уже придумал одно решение - это хак, и он, похоже, работает, но у него могут быть недостатки, мне нужно будет немного протестировать...

14
задан Šime Vidas 20 December 2011 в 18:50
поделиться