добавить содержимое в функцию с помощью JavaScript - PullRequest
0 голосов
/ 14 ноября 2010

Я пытаюсь вставить некоторый контент в определенную функцию, что-то вроде этого:

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

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

вывод будет: «Привет», а затем еще одно предупреждение с «Привет».

Можно ли сделать что-то подобное? Пожалуйста, помогите.

Ответы [ 4 ]

1 голос
/ 14 ноября 2010

Вы можете передать одну функцию в другую в качестве аргумента, который может вызвать ее параметр функции.

Пример: http://jsfiddle.net/ybNu9/

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

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

f( e );

Конечно, для этого требуется ожидание такого параметра в функции f.

1 голос
/ 14 ноября 2010

Единственное, что я мог себе представить (но вопрос в том, имеет ли это смысл), это что-то вроде этого:

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

Но это просто выполнение функций одна за другой, у вас нет доступа к переменным, объявленным в других функциях, и возвращаемые значения теряются.

0 голосов
/ 14 ноября 2010

Вы не можете «вставить» код в функцию, я полагаю, что самое близкое, что вы можете сделать, это переопределить исходную функцию, например:

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

Хотя ... я не могу придумать общую хорошую причину сделать это (в большинстве случаев есть лучшее решение), вы не можете запустить дополнительную функцию или вызвать обе? например:

function newFunc() { f(); e(); }
0 голосов
/ 14 ноября 2010

нет, это против любого "нормального" соглашения о программировании.Запись a = f + e объединит их возвращаемые значения, это все, что вы можете сделать, чтобы, по крайней мере, имитировать поведение, которое вы хотите.Запись f = f + e недопустима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...