使用javascript在函数中附加内容

时间:2010-11-14 15:46:06

标签: javascript jquery function scripting

我正在尝试在已定义的函数中插入一些内容,如下所示:

var f = function(){
   alert("Hello");
};

var e = function(){
   alert('Hey');
};
    f = f + e;
f();

输出将是:“Hello”,然后另一个警告“嘿”。

有可能做这样的事吗?请帮忙。

4 个答案:

答案 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();

DEMO

但这只是一个接一个地执行函数,你无法访问其他函数中声明的变量,并且返回值会丢失。

答案 1 :(得分:1)

您可以将一个函数作为参数传递给另一个函数,该函数可以调用其函数参数。

示例: http://jsfiddle.net/ybNu9/

var f = function( fn ){
   alert("Hello");
   fn();
};

var e = function(){
   alert('Hey');
};

f( e );

当然,这需要在f函数中预期这样的参数。

答案 2 :(得分:0)

不,这是违反任何“正常”编程约定的。写一个= f + e会连接它们的返回值,这就是你能做的所有事情,至少可以模拟你想要的行为。写f = f + e是非法的。

答案 3 :(得分:0)

你不能在代码中“插入”代码,我想你最接近的是重新定义原始函数,例如:

var old_f = f;
f = function() { old_f(); alert('Hey'); };

虽然......我想不出一个通用的理由这样做(在大多数情况下有一个更好的解决方案),你能不运行一个额外的功能,或者同时调用两个?例如:

function newFunc() { f(); e(); }