3 Stimmen

inneres Objekt, das auf den Container zugreift

Gibt es eine Möglichkeit für ein inneres Objekt (t1), auf sein Containerobjekt zuzugreifen.

var t = {
                fnc1: function(){
                    alert("fnc1");
                },
                t1: {
                    fnc2: function(){
                        alert("fnc2");
                    },
                    fnc3: function(){
                        this.fnc1();
                    }
                }
            };
t.t1.fnc3();

Beim Ausführen des folgenden Codes erhalte ich die Fehlermeldung "this.fnc1 ist keine Funktion", da sich this auf das Objekt t1 und nicht auf das Objekt t bezieht.

Gibt es eine Möglichkeit, auf die fnc1 zuzugreifen?

2voto

Christoph Punkte 157217

Sicher, solange Sie die Variable nicht überschreiben:

t.fnc1()

Wenn Sie anrufen möchten fnc1() als eine Methode zur t.t1 verwenden call() o apply() .

0voto

Mic Punkte 24128

Der Versuch, Javascript als reine OO-Sprache zu verwenden, führt oft zu vielen Frustrationen.

Sie könnten versuchen, stattdessen die Javascript-spezifischen Eigenschaften zu nutzen, vor allem Funktionen und Closures.
Ich habe Ihr Beispiel genommen und eine Variante daraus gemacht:

var t = function(){
    var str = "fnc", 
        fnc1 = function(){
            alert( str + "1");
        };
    return {
        fnc1:fnc1,
        t1:{
            fnc2:function(){
                alert( str + "2");
            },
            fnc3:fnc1
        }
    };
};
t().t1.fnc3();

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