2016-05-30 12 views
2
abgerufen werden.

Im folgenden Code kann ich job1 & job2, das von jobContainer zurückgegeben wird, nicht aufrufen.Die zurückgegebene Methode kann nicht vom Instanznamen

// Code goes here 

var jobContainer = function() { 

    var count = 0; 

    var task1 = function() { 
    count += 1; 
    console.log("inside task1 " + count); 
    }; 

    var task2 = function() { 
    count += 1; 
    console.log("inside task2 " + count); 
    }; 

    return { 
    job1: task1(), 
    job2: task2() 
    }; 

}; 

var tasker = jobContainer(); 
tasker.job1 // not working 
tasker.job2 // not working 
tasker.job2 // not working 

Ausgang:

inside task1 1 
inside task2 2 

Danke

+1

'zurück { job1: task1, job2: task2 };' – Tushar

Antwort

1
return { 
    job1: task1(), 
    job2: task2() 
}; 

Das Problem ist, wenn ich verstehe, was Sie versuchen, richtig zu tun, werden Sie die Funktionen aufrufen vor das Rückgabeobjekt ist konstruiert. Ich vermute, Ihre Absicht war, die Funktionen selbst zurückzugeben, nicht die Rückgabewerte.

Ändern Sie den obigen Code (beachten Sie die Funktionen nicht aufgerufen werden):

return { 
    job1: task1, 
    job2: task2 
    }; 

Dann das zweite Bit ändern:

var tasker = jobContainer(); 
tasker.job1() 
tasker.job2() 
tasker.job2() 

Hinweis wir die Funktionen jetzt nennen.

1

Ihre Rückkehr Ergebnis der Ausführung task1 und task2 statt Funktionen, so ersetzen:

return { 
    job1: task1(), 
    job2: task2() 
}; 

zu

return { 
    job1: task1, 
    job2: task2 
}; 
var tasker = jobContainer(); 
tasker.job1() // inside task1 1 
tasker.job2() // inside task2 2 
tasker.job2() // inside task2 3 

Viel Glück!

2

Falsche Erträge sind aus

// Code goes here 
 
var jobContainer = function() { 
 
    var count = 0; 
 

 
    var task1 = function() { 
 
    count += 1; 
 
    console.log("inside task1 " + count); 
 
    }; 
 

 
    var task2 = function() { 
 
    count += 1; 
 
    console.log("inside task2 " + count); 
 
    }; 
 

 
    return { 
 
    job1: task1, 
 
    job2: task2 
 
    }; 
 

 
}; 
 

 
var tasker = jobContainer(); 
 
tasker.job1() 
 
tasker.job2() 
 
tasker.job2()

Verwandte Themen