10

javascriptを使用してparamettersで特定の関数呼び出しを聞くにはどうすればよいですか?

例:showname(2)が呼び出されると、別の関数を呼び出すようなこともできます。showage(2)

4

3 に答える 3

17

あなたはそれを包むことができます:

var native = window.alert;

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

alert('test');

アップデート

ゲッターやセッターを使用して、プロパティで同様のことを行うことができます。

var foo = {
     bar = 'baz'
};

の中へ

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';

カプセル化(プライベート_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;
        }
    };
}();
于 2013-02-07T19:39:41.923 に答える
0

いいえ、任意の関数呼び出しに「フック」することはできません。

于 2013-02-08T00:29:07.063 に答える
-2

これを行う1つの方法は、関数にコールバックを追加することです。たとえば、次のように定義します。

function showname(firstname, lastname, callback){
    alert(firstname + lastname);
    if(callback) callback();
}

function showage(){ 
   alert("who's age?");
}

そして、電話してください:

showname("John", "Doe", showage);
于 2013-02-07T19:47:25.390 に答える