2016-06-06 8 views
1

Ich versuche, Interna von Javascript zu verstehen. Ich habe ein Missverständnis von this Stichwort. Überall angegeben, dass this Schlüsselwort Verweis auf das Objekt ist, das Funktion aufruft.Javascript dieses Schlüsselwort innerhalb der Funktionen

Aber so weit ich weiß function ist ein Objekt auch.
betrachten also dieses Beispiel

var car = { 
    brand: "Nissan", 
    getBrand: function(){ 
    var closure = function(){ 
     console.log(this.brand); 
     console.log(this); 
    }; 
    return closure(); 
    } 
}; 

car.getBrand(); 

Warum this Referenz innerhalb closure Punkt zum global Objekt statt getBrand Umwicklungsfunktion? Wiederum ist alles Objekt in Javascript, also kann ich dieses Verhalten nicht verstehen.

Bitte erläutern Sie dies aus der Sicht der Interna.

Dank

+1

Ich denke, es ist ein näheres Duplikat von: http://Stackoverflow.com/q/9644044/1666547 –

Antwort

4

Weil Wert von this durch bestimmt wird, wie function genannt wird .. closure wird ohne Bezug von context und globalem Kontext ist window genannt (in Browser)

Verwenden Function.prototype.callthis angeben Kontext während Funktion ist invoked

var car = { 
 
    brand: "Nissan", 
 
    getBrand: function() { 
 
    var closure = function() { 
 
     console.log(this.brand); 
 
     console.log(this); 
 
    }; 
 
    return closure.call(this); 
 
    } 
 
}; 
 

 
car.getBrand();

Verwandte Themen