Wenn man die _C-Funktion auf eine benutzerdefinierte Klassen-Mitgliedsfunktion verwendet, wird nicht das richtige this erhalten.

Schriftsteller:Lichtung, Erstellt: 2019-08-11 14:47:22, aktualisiert: 2019-08-11 14:50:47

Versuchen Sie, den folgenden Code auszuführen:

function MyClass()
{
    this.m_name = "my name";
}

MyClass.prototype.printMyName = function()
{
    Log(this.m_name);
    return true;
}

function main() {
    var myobj = new MyClass();
    myobj.printMyName();
    _C(myobj.printMyName);
}

Das Ergebnis ist:

  • Mein Name ist
  • Null

Wenn _C ((myobj.printMyName) aufgerufen wird, verweist this in der Funktion nicht auf den myobj-Objekt Wie soll das Problem gelöst werden?


Mehr

Kleine Träume- Ich weiß nicht. Funktion MyClass (() { Vergleichswert Selbst.m_name = "Mein Name" - Ich weiß. Selbst.printMyName = Funktion () { Log ((selbst.m_name) zurückkehren wahr - Ich weiß. - Ich weiß. Rückgabe selbst - Ich weiß. Funktion main() { VAR myobj = MyClass (() myobj.printMyName() _C ((myobj.printMyName) - Ich weiß. - Ich weiß nicht.

Kleine TräumeDer Grund dafür ist, dass sich der This-Pointer nach der Übertragung von myobj.printMyName in _C geändert hat.

LichtungDanke!