Über XBL spricht nicht gerade über Javascript sprechen. Also werde ich diese Frage erstellen, die mit this one verwandt ist, aber jetzt über XBL, wo ich nicht der Ersteller des Root-JavaScript-Codes bin, sondern nur der Methoden und Event-Handler innerhalb der Bindungen.Der beste Ansatz, um Javascript zu vermeiden "diese" Fehler in XBL
-
In einigen Fällen kann das this
Schlüsselwort auf das Objekt beziehen kann ich nicht erwarten, dass es zu. (Aktuelles Beispiel: in an key event, in my XBL)
Was ist der beste Ansatz ist, diese Art von Fehler zu vermeiden
Vorerst bin ich mit der immer getElementById
(oder $.fn
von jQuery), aber ich bin mir nicht sicher, ob es das ist beste Ansatz
--update
ein wenig mehr Details.
Innerhalb eines XBL method der einzige Weg, auf das Element zuzugreifen, das in der Datei Xul definiert wurde (die GUI-Beschreibungsdatei), ohne "this" zu verwenden (da es nicht das erwartete "this" ist), mit getElementById, und das macht den Code nicht wiederverwendbar Ich suche nach Alternativen ..
'bind' in EcmaScript gebaut 5, und die neue' strict' Modus macht eine Menge 'diese 'Probleme scheitern schnell. –
Danke für die Antwort, in Ihrem Beispiel haben Sie die "Leiste" als "self" zu verwenden, aber innerhalb einer [XBL-Methode] (https://developer.mozilla.org/en/XUL_Tutorial:Adding_Methods_to_XBL-defined_Elements) der einzige Weg Der Zugriff auf das Element, das in der [Xul] (https://developer.mozilla.org/en/XUL) -Datei (der GUI-Beschreibungsdatei) definiert wurde, erfolgt mit getElementById, und das macht den Code nicht wiederverwendbar, also bin ich Suche nach Alternativen .. –
Anstatt OtherDoc.addEventListener zu schreiben ("event", this.myMethod, false); du schreibst jetzt otherDoc.addEventListener ("event", this.bindFunction (this, this.myMethod), false); – Neil