我正在尝试在已定义的函数中插入一些内容,如下所示:
var f = function(){
alert("Hello");
};
var e = function(){
alert('Hey');
};
f = f + e;
f();
输出将是:“Hello”,然后另一个警告“嘿”。
有可能做这样的事吗?请帮忙。
答案 0 :(得分:1)
我唯一想象的东西(但问题是它是否有意义)是这样的:
function combine() {
var func = arguments;
return function() {
for(var i = 0; i < func.length; i++) {
if(typeof func[i] == 'function') {
func[i]();
}
}
}
}
然后:
f = combine(f,e);
f();
但这只是一个接一个地执行函数,你无法访问其他函数中声明的变量,并且返回值会丢失。
答案 1 :(得分:1)
您可以将一个函数作为参数传递给另一个函数,该函数可以调用其函数参数。
示例: http://jsfiddle.net/ybNu9/
var f = function( fn ){
alert("Hello");
fn();
};
var e = function(){
alert('Hey');
};
f( e );
当然,这需要在f
函数中预期这样的参数。
答案 2 :(得分:0)
答案 3 :(得分:0)
你不能在代码中“插入”代码,我想你最接近的是重新定义原始函数,例如:
var old_f = f;
f = function() { old_f(); alert('Hey'); };
虽然......我想不出一个通用的好理由这样做(在大多数情况下有一个更好的解决方案),你能不运行一个额外的功能,或者同时调用两个?例如:
function newFunc() { f(); e(); }