我可以收听使用 javascript 的函数调用吗?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14759523/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
can i listen to a function call using javascript?
提问by Mohamed Hédi Lassoued
How can i listen to a specific function call with parametters using javascript:
我如何使用 javascript 监听带有参数的特定函数调用:
example : when showname(2) is called i can do something like call another function too, showage(2)
示例:当调用 showname(2) 时,我也可以执行诸如调用另一个函数之类的操作,showage(2)
回答by bevacqua
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:
您可以使用 getter 和/或 setter 对属性执行类似的操作:
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
):
封装(私有_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;
}
};
}();
回答by Lightness Races in Orbit
You can't "hook" into arbitrary function calls, no.
你不能“挂钩”到任意函数调用中,不。
回答by Matekk
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);