У меня есть хэш, называемый опциями. Проблема, с которой я сталкиваюсь, заключается в том, что options['beforeOpen']
уже может быть функцией, и в этом случае я не хочу ее перезаписывать. Я бы хотел вместо этого называть его, а затем вызвать другую функцию, которую нужно вызывать каждый раз.Внедрение анонимной функции внутри другой анонимной функции
В этом примере метод, который нужно вызывать каждый раз, - methodThatINeedToDo
. Я думал, что код ниже выполнит это, но он не работает, как я ожидал.
function methodThatINeedToDo(){alert('maintenance');}
var options = {beforeOpen: function(){alert('first');}}
if(typeof options['beforeOpen'] == "function"){
options['beforeOpen'] = function(){options['beforeOpen'].call(); methodThatINeedToAddToDo();}
} else {
options['beforeOpen'] = methodThatINeedToDo;
}
Какие проблемы у вас с этим кодом? Кажется, это сработало для меня. –
почему опции ['beforeOpen']. Call()? не должны быть опциями ['beforeOpen']()? – Edorka
Почему даже беспокоиться об этом негибкое решение? – schlingel