2015-09-24 16 views
5

göre this explanation in MDN için:`küresel bağlamda ve işlev içinde this`

küresel bağlamda
  • fonksiyonu doğrudan tekrar kesilmesi, this küresel nesne işlev bağlamında
  • değinmektedir

    var globalThis = this; 
    function a() { 
        console.log(typeof this); 
        console.log(typeof globalThis); 
        console.log('is this the global object? '+(globalThis===this)); 
    } 
    
    a(); 
    
    : aşağıdaki, henüz dünya nesnesinin

değinmektedir dosyasında foo.js yerleştirilen 210

... üretir: bir modülde yazmak ne olursa olsun kod

node.js yılında
$ nodejs foo.js 
object 
object 
is this the global object? false 
+0

deneyin 'console.log (bu) eklemek gibi gerçek küresel nesne başvurmak için, global object kullanabilirsiniz; – mplungjan

cevap

5

bir fonksiyonun sarılmış olacaktır. Bu konuda daha fazlasını okuyabilirsiniz, bu detailed answer. Yani, modülün en üst düzeyindeki this, global nesnenin değil, bu işlevin bağlamına atıfta bulunacaktır.

Aslında bu

function a() { 
    console.log('is this the global object? ' + (global === this)); 
} 

a(); 
+0

Gerçekte ne olduğunu görmek için console.log (globalThis); 'a' modülün içinden çağrıldığı göz önüne alındığında, bu fonksiyonun içinde ve dışında aynı olmamalı mıdır? –

+0

@JamesThorpe 'a' hiçbir bağlam nesnesi (' this') olmadan çağrılır. Yani, varsayılan olarak 'bu' sadece global nesneyi gösterir. – thefourtheye