Ich habe Funktion A
, die eine andere Funktion definiert B
. B wird als argument
zu einer anderen Funktion C
zu handle event
für die spätere Verwendung übergeben. Funktion B need data
von function A
. Ist es möglich, Daten auf diese Weise zu übertragen?Pass Daten von außerhalb Funktion in innerer Funktion für die spätere Verwendung
Antwort
Indem Sie B als Funktion auf diese Weise zuweisen, deklarieren Sie es im Wesentlichen als Konstruktor für eine neue Klasse. B.blio
ist keine Eigenschaft des Objekts, sondern eine statische Eigenschaft für diese Klasse und kann daher nicht mit this
referenziert werden.
Stattdessen sollten Sie eine Funktion für den Prototyp für die B
-Klasse erstellen, die auf den gespeicherten Wert eines instanziierten Objekts zugreifen wird. Siehe das folgende Beispiel:
var o = [1,2,3];
var B = function() {
console.log("constructor called");
};
B.prototype.func = function() {
console.log(this.blio);
}
function A(){
var b = new B();//instantiate new object
b.blio = o;//assign property to object
b.func();//call prototype function
}
Sie B Parameter A bestanden außer Kraft setzen funktionieren, wenn Sie
B = function() {
alert(this.blio); // data from A
};
zuweisen und dann wieder Parameter B außer Kraft setzen, indem Sie versuchen eine Eigenschaft zuweisen (wie auf ein Objekt) eine Funktion
B.blio = o;
Sie sollten dies versuchen:
function A(B){
var o = [1,2,3];
B.myfunc=function()
{
alert(this.blio);
};
B.blio = o; //bind data in property to B
$('selector').C({ result: B.myfunc()}); //handle event
}
Lassen Sie uns über ein paar Dinge sprechen, die hier im Zusammenhang mit dem Umfang gehen.
function alpha(beta) {
this.foo = 42;
console.log('From inside alpha:', this.foo);
var beta = function() {
console.log('Form inside beta:', this.foo);
};
beta();
}
alpha();
Wenn Sie die Funktion alpha ausführen, diese ist eigentlich das global Fenster Objekt.
Wenn Sie den Code unten in der Konsole lief würden Sie sehen, dass die Alpha-Funktion, um die foo Eigenschaft Fenster und setzen Sie ihn auf 42.
console.log(window.foo);
Vom Lesen der Kommentare nur hinzugefügt in Ihrem Code, mit dem Sie ein Ereignis behandeln, und können den aktuellen Wert, den Sie benötigen, als Datenspeicher abrufen. Der Schlüssel hierfür ist, dass Sie Zugriff auf den Bereich haben, in dem die erforderlichen Werte enthalten sind.
Geben Sie spezifischeren Code ein wäre auch hilfreich für hel Du bekommst eine bessere Antwort. Die Rolle aller verschachtelten Funktionen ist unklar.
- 1. C++ speichern Funktion und Parameterliste für die spätere Verwendung
- 2. Pass lokaler Variable in der Funktion außerhalb Funktion
- 3. JS Funktion, die Funktion für die spätere Verwendung zurückgibt - Argumente undefined
- 4. Speichern eines Zeigerwerts für die spätere Verwendung
- 5. Speichern von Daten auf der Seite für die spätere Verwendung
- 6. Rückgabewert von innerer Funktion einer Funktion node.js/MySQL
- 7. Rückkehr von innerer Funktion in JavaScript?
- 8. Speichern Variable für die spätere Verwendung
- 9. Pass Array von Daten zu jQuery-Funktion
- 10. Node.js Variable Verwendung außerhalb der Funktion
- 11. Pass Informationen von Plot zu Funktion
- 12. Async-Funktion in Schleife - mache Variable in innerer Funktion verfügbar
- 13. Talend: Speichern Variable für die spätere Verwendung
- 14. Javascript: Eine Funktion, die IIFE sowie Funktionsdefinition für die spätere Verwendung ist
- 15. Speichern einer Destrukturierungskarte für die spätere Verwendung
- 16. Erstellen von Dateien für die spätere Verwendung in Java
- 17. Laravel - Pass AJAX Daten zu Funktion
- 18. Keine Daten außerhalb einer Funktion in JS
- 19. Pass Bereich in Funktion
- 20. Pass Tupels in Funktion
- 21. Modifizieren von Instanzvariablen aus innerer Funktion in einer Prototyp-Methode
- 22. Safe zu speichern list :: Iterator für die spätere Verwendung?
- 23. Ionic 2: Kann nicht von innerer Funktion navigieren
- 24. Speichern des Komponentennamens als Zeichenfolge für die spätere Verwendung
- 25. Pass-Funktion in der JavaScript-Funktion aufruft 2. Funktion sofort
- 26. Pass Funktion Mitgliedszeiger als Parameter zur Funktion
- 27. jQuery - Pass variable Funktion
- 28. speichern Benutzereingaben für eine spätere Verwendung C#
- 29. Pass Argumente Funktion
- 30. So speichern Sie Skalierungsparameter für die spätere Verwendung
Wie ist das Verhalten, wenn Sie es versuchen? –
In Funktion B ist diese.blio nicht definiert. – TheChampp
Welcher Code ruft den Aufruf von 'B()' auf? –