2016-02-06 5 views
0

Я пытаюсь выяснить, как я могу ссылаться на аргумент на функцию-обертку, хранящуюся в переменной, вызывающей анонимную функцию. Например, в приведенном ниже примере. Проблема, с которой я сталкиваюсь, заключается в том, что я использую доступ к параметрам через переменную arguments, но это видит только параметр myFunc. Я знаю, что это возможно, но я не могу понять, как это сделать.Как ссылаться на родительские параметры анонимной функции Javascript

var myFunc = function(arg1, arg2){//do stuff} 
var myFuncWrapped = wrapper(myFunc); 

myFuncWrapped('arg value1', 'arg value2'); 

function wrapper(func){ 
    //how can I reference 'arg value1' from here since arguments == myFunc? 
} 
+1

В коде, который вы отправили 'myFuncWrapped', будет содержаться результат' wrapper (func) '. Итак, если вы хотите, чтобы этот код работал правильно, 'wrapper' должен возвращать функцию. – SZenC

ответ

1

Как комментарий предложил, wrapper должен возвращать функцию, так что вы можете захватить аргументы через closure когда myFuncWrapped вызывается.

var myFunc = function(arg1, arg2) { 
    console.log(arg1); // (For testing only) Should be"arg value1" 
}; 

var myFuncWrapped = wrapper(myFunc); 

myFuncWrapped('arg value1', 'arg value2'); 

function wrapper(func) { 
    /* The anonymous function below is actually the one 
    * being called when you invoke "myFuncWrapped" so it has the arguments you need. 
    */ 
    return function() { 
     console.log(arguments[0]); // (For testing only) Should be"arg value1" 
     func.apply(this, arguments); 
    } 
} 
+0

Некоторый пояснительный текст будет приятным – Bergi

+0

Простите, да. Добавьте его сейчас. :) – Ryan