In dem folgenden Code möchte ich einen Verweis auf eine Funktion, die auf dem übergeordneten Bereich befindet, an den verschachtelten Bereich der Funktion "geschachtelt" übergeben, so dass ich die Funktion auf dem aufrufen kann Parent-Bereich aus der verschachtelten Funktion. Ich habe versucht, es als Parameter übergeben, aber es funktioniert nicht. Ich lerne nur mit verschachtelten Verschlüssen herum und frage mich, ob das gemacht werden könnte.Übergeben Sie eine Funktionsreferenz an eine geschachtelte Closure
Ich möchte die Syntax haben nested
für den Aufruf sein: callme.nested()
var obj = function(val){
var access = val;
var apex = 0;
return {
callme : (function(siblyng){
var privatevar = 2;
return {
nested : function(){
privatevar++;
apex = privatevar;
return access + " " + privatevar + " " + siblyng("child");
}
}
})(this.sibling),
assess : function(){
return apex + " " + this.sibling("parent");
},
sibling : function(val){
return "returned from " + val + " scope";
}
}
}
var objref = obj(true);
console.log(objref.callme.nested());
console.log(objref.callme.nested());
console.log(objref.callme.nested());
console.log(objref.assess());
console.log(objref.sibling('global'));
"* übergeben Sie einen Verweis auf eine Funktion im übergeordneten Bereich auf den verschachtelten Bereich der Funktion geschachtelt *". Bitte klären Sie, welche die Referenz ist, welche die residierende Funktion ist, welcher der übergeordnete Bereich ist, welcher der verschachtelte Bereich ist und welche die geschachtelte Funktion ist. – Oriol
ich denke, die am nächsten zu bekommen von den Begriffen "Funktion Nesting & Closures" sind Funktionen höherer Ordnung. Dies sind Funktionen, die andere Funktionen zurückgeben (und erzeugen). http://eloquentjavascript.net/05_higher_order.html Das Verschachteln von verschachtelten/selbst-referenzierenden Daten wird höchstwahrscheinlich nur ein Durcheinander erzeugen. – lipp
@Oriol, habe ich meine Frage aktualisiert, was ich tun möchte, ist die Funktion 'Geschwister' aus der verschachtelten Funktion 'geschachtelt' zu nennen. Ich habe jedoch zwei verschiedene Möglichkeiten ausprobiert, um einen Verweis auf die Funktion zu übergeben, und keiner hat funktioniert. – user2912840