can i listen to a function call using javascript?

14,716

you can wrap it:

var native = window.alert;

window.alert = function(){
    console.log('alerting...');
    native.apply(window, arguments);
    console.log('alerted!');
};

alert('test');

update

you can do something similar with properties, using getters and/or setters:

var foo = {
     bar = 'baz'
};

into

var foo = {
    _bar: 'baz',
    get bar(){
        console.log('someone is taking my bar!');
        return this._bar;
    },
    set bar(val){
        console.log('someone pretends to set my bar to "' + val + '"!');
        this._bar = val;
    }
};

alert(foo.bar);

foo.bar = 'taz';

encapsulated (private _bar):

var foo = function(){
    var _bar = 'baz';

    return {
        get bar(){
            console.log('someone is taking my bar!');
            return _bar;
        },
        set bar(val){
            console.log('someone pretends to set my bar to "' + val + '"!');
            _bar = val;
        }
    };
}();
Share:
14,716
Mohamed Hédi Lassoued
Author by

Mohamed Hédi Lassoued

Updated on July 19, 2022

Comments

  • Mohamed Hédi Lassoued
    Mohamed Hédi Lassoued almost 2 years

    How can i listen to a specific function call with parametters using javascript:

    example : when showname(2) is called i can do something like call another function too, showage(2)

  • Guntram
    Guntram over 3 years
    You can by wrapping the original function, as @bevacqua supposes.
  • Guntram
    Guntram over 3 years
    imo, a callback is not an answer to the question "can i listen to a function call using javascript?"
  • Guntram
    Guntram over 3 years
    Now I remember wrapping console.error to fetch console errors for logging...I also have a unit test for that :D