سؤال

وهنا هو ما قلته:

var log = function(arg1, arg2){
    console.log("inside :" + arg1 + " / " + arg2);
}; 

var wrap = function(fn){
    return function(args){ 
        console.log("before :");
        fn(args);
        console.log("after :");
    }
};

var fn = new wrap(log);
fn(1,2);

من الخطأ، لأنني ترغب في الحصول على وحدة التحكم:

before :
inside :1 / 2
after :

ولكن أحصل على هذا بدلا من ذلك:

before :
inside :1 / undefined
after :

وكيف يمكنني معرفة جافا سكريبت أن args هو كل الحجج التي تم تمريرها إلى وظيفة إرجاعها بواسطة wrap؟

هل كانت مفيدة؟

المحلول

ويمكنك استخدام تطبيق لاستدعاء دالة مع المحدد 'هذا' وسيطة صفيف، وذلك في محاولة

var wrap = function(fn){
    return function(){ 
        console.log("before :");
        fn.apply(this, arguments);
        console.log("after :");
    }
};
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top