2015-04-08 3 views
3

У меня возникли проблемы с перехватом вызовов конструктора в библиотеку (так что я могу воспроизвести их позже), сохраняя при этом цепочку прототипов. Более конкретно, я работаю с библиотекой (ThreeJS, но может быть любой библиотекой) и некоторым кодом, который использует эту библиотеку. Я хочу написать фрагмент кода, который изменяет объекты библиотеки, поэтому я могу запускать блок кода каждый раз при вызове конструктора.Перехват вызовов конструктору

Пример: когда создается новая сцена, я хочу напечатать «новую сцену, созданную» на консоли.

var scene = new THREE.Scene(); 

Когда конструктор принимает аргументы, я также хочу записать эти аргументы.

+1

Может отсутствовать точку, но если ты один вызова '' новый ... может вы не просто регистрируете информацию самостоятельно? –

+0

Моя цель - отредактировать ни код библиотеки, ни код, вызывающий новый, а только третий файл, который перехватывает вызовы конструктора. –

ответ

6

Я не уверен в этом, но ... вы могли бы попробовать что-то вроде ...

// Backup the original constructor somewhere 
THREE._Scene = THREE.Scene; 

// Override with your own, then call the original 
THREE.Scene = function() { 
    // Do whatever you want to do here.. 
    THREE._Scene.apply(this, arguments); 
} 

// Extend the original class 
THREE.Scene.prototype = Object.create(THREE._Scene.prototype); 
Смежные вопросы