can i listen to a function call using javascript?

前端 未结 3 1368
难免孤独
难免孤独 2020-12-16 03:40

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 to

相关标签:
3条回答
  • 2020-12-16 04:21

    You can't "hook" into arbitrary function calls, no.

    0 讨论(0)
  • 2020-12-16 04:33

    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;
            }
        };
    }();
    
    0 讨论(0)
  • 2020-12-16 04:36

    One way to do it is to add a callback to the function, for example define:

    function showname(firstname, lastname, callback){
        alert(firstname + lastname);
        if(callback) callback();
    }
    
    function showage(){ 
       alert("who's age?");
    }
    

    And call:

    showname("John", "Doe", showage);
    
    0 讨论(0)
提交回复
热议问题