Страницы

Поиск по вопросам

среда, 5 июня 2019 г.

Добавление кода в нативные функции

Как можно добавить немного своего кода в функцию (не свою, а [native code]).
Пример кода:
Math.__defineGetter__('pow', function() { console.log( 'USE: Math.pow' ); return function() { return 100500; }; });
То есть при вызове Math.pow(1,2); в консоль пишется 'USE: Math.pow' и возвращается 100500
Надо сделать так, чтобы функция писала в консоль и продолжала свою "правильную" работу.
Я пишу "юзерскрипт" и хочу знать какие методы использует сайт. Не все, конечно, а, например, только из Math
for (var i in Math ) { eval('Math.__defineGetter__( "' + i + '", function() { console.log( "USE Math.' + i + '" ); return 1; });'); }
Сейчас я могу это узнать, в консоль всё пишет, но функции не работают и вызывают ошибки.


Ответ

Простой пример с Math.pow() для демонстрации идеи:
var savedPow = Math.pow; Math.pow = function(number, exp) { console.log('USE: Math.pow'); return savedPow(number, exp); }; console.log(Math.pow(10, 3));

Комментариев нет:

Отправить комментарий