3 Stimmen

Wie greift man auf öffentliche Eigenschaften der Elternfunktion in JavaScript zu?

Ich versuche, einige JavaScript-Funktionen für eine Webanwendung zu schreiben.

Nach dem Rat von hier: Wie deklariere ich einen Namespace in JavaScript?

Ich versuche den Code unauffällig zu machen, indem ich alles in benannte Funktionen verpacke, jedoch habe ich Schwierigkeiten, auf Eigenschaften der Elternfunktion zuzugreifen, wenn ich mich in einer anonymen Kindfunktion befinde.

Zum Beispiel:

var title_picker = new function(){
    // Diese Eigenschaft sollte öffentlich sein
    this.callback=function(){};

    var ok=function(){
        var title = $('input#title').val();
        callback(title) // <--- 
    }
...

Wenn ich innerhalb der Funktion "ok" bin, wie kann ich am besten auf die Eigenschaft "callback" verweisen?

4voto

Quentin Punkte 850700

Mit dem vorliegenden Code gibt es keine.

Sie können auf Variablen aus dem Bereich des übergeordneten Elements zugreifen, es sei denn, sie werden im engeren Bereich überschrieben.

this wird immer überschrieben.

Sie können this jedoch in eine andere Variable kopieren, die im Bereich bleibt:

var title_picker = new function(){

    var self = this; // Dieses in eine Variable kopieren, die im Bereich bleibt

    // Diese Eigenschaft sollte öffentlich sein
    this.callback = function(){};

    var ok=function(){
        var title = $('input#title').val();
        self.callback(title) // self ist immer noch im Bereich
    }
...

2voto

Lucas Punkte 12757

Vielleicht so etwas wie:

var title_picker = new function(){
    // Diese Eigenschaft sollte öffentlich sein
    this.callback=function(){};
    var that = this;

    var ok=function(){
        var title = $('input#title').val();
        that.callback(title) // <--- 
    }
...

Obwohl es viele Frameworks gibt, die so etwas für Sie tun (yui, dojo, prototype...)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X