首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能用javascript监听函数调用吗?

我能用javascript监听函数调用吗?
EN

Stack Overflow用户
提问于 2013-02-08 03:36:59
回答 3查看 14.3K关注 0票数 10

如何使用javascript监听带有参数的特定函数调用:

示例:当调用showname(2)时,我可以做一些事情,比如调用另一个函数,showage(2)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-08 03:39:42

你可以包装它:

代码语言:javascript
运行
复制
var native = window.alert;

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

alert('test');

更新

您可以使用getter和/或setter对属性执行类似的操作:

代码语言:javascript
运行
复制
var foo = {
     bar = 'baz'
};

转到

代码语言:javascript
运行
复制
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):

代码语言:javascript
运行
复制
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;
        }
    };
}();
票数 17
EN

Stack Overflow用户

发布于 2013-02-08 08:29:07

你不能“钩住”任意的函数调用,不能。

票数 0
EN

Stack Overflow用户

发布于 2013-02-08 03:47:25

一种方法是向函数添加回调,例如定义:

代码语言:javascript
运行
复制
function showname(firstname, lastname, callback){
    alert(firstname + lastname);
    if(callback) callback();
}

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

并呼叫:

代码语言:javascript
运行
复制
showname("John", "Doe", showage);
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14759523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档