Wie funktioniert keyword "this" innerhalb der Funktion?

Ich kam gerade über eine interessante situation, in JavaScript. Ich habe eine Klasse mit einer Methode, die definiert, mehrere Objekte mit dem Objekt-literal Schreibweise. Im inneren dieser Objekte, die this Zeiger verwendet wird. Aus dem Verhalten des Programms, habe ich gefolgert, dass die this Zeiger verweist auf die Klasse, auf dem die Methode aufgerufen wurde, und nicht das Objekt erzeugt wird, indem die wörtliche.

Dies scheint willkürlich, aber es ist die Art und Weise würde ich erwarten, dass es funktioniert. Ist das Verhalten definiert? Ist es cross-browser sicher? Gibt es irgendeine Begründung, warum es ist wie es ist, über "die spec sagt ja" (zum Beispiel, ist es eine Folge der etwas breiteren design-Entscheidung/Philosophie)? Abgespeckte code Beispiel:

//inside class definition, itself an object literal, we have this function:
onRender: function() {

    this.menuItems = this.menuItems.concat([
        {
            text: 'Group by Module',
            rptletdiv: this
        },
        {
            text: 'Group by Status',
            rptletdiv: this
        }]);
    //etc
}
es geschieht, wenn ich dies auch tun var signup = { onLoadHandler:function(){ console.log(this); return Type.createDelegate(this,this._onLoad); }, _onLoad: function (s, a) { console.log("this",this); }};
siehe auch Wie geht der "this" - Schlüsselwort in Javascript agieren in einem Objekt-literal?
check out diesem post. Hat einige gute Erläuterung der verschiedenen Nutzungs-und Verhaltensweisen dieses keyword.
Kasse diesem link scotch.io/@alZami/understanding-this-in-javascript

InformationsquelleAutor rmeador | 2008-09-25

Schreibe einen Kommentar