2016-03-25 6 views
4

ich zu verstehen versuche, warum die folgenden:Typoskript kompilierten Code mit verschachtelten und sofortige Funktion aufrufen

I

class User { 
    wow:String = "xxx"; 
} 

und Typoskript Compiler

var User = (function() { 
    function User() { 
     this.wow = "xxx"; 
    } 
    return User; 
}()); 

eher

kompiliert haben als

var User = function() { 
    this.wow = "xxx"; 
}; 

Welche Vorteile bietet der verschachtelte Benutzerkonstruktor und der sofortige Funktionsaufruf?

+1

Es ist eher eine Sicherheits Sache, je gehört von JavaScript Schließungen? TypeScript hilft dabei, Ihren JS-Code sicherer zu machen, indem Sie diese Art von Dingen beim Kompilieren anwenden, so dass Sie es nicht manuell machen müssen. – Chrillewoodz

+1

@Chrillewoodz - In diesem Beispiel werden keine Variablen aus dem äußeren Bereich des Abschlusses verwendet. Daher scheint die Schließung keinen Sicherheitsvorteil zu bieten. – RJM

Antwort

3

Es kann mehr gute Gründe geben, aber ich vermute, einer von ihnen, dass, wenn Sie die folgenden einfachen alten JavaScript (über Compiler-Ausgang des Typoskript) ausführen:

var john = new User(); 
console.log("John constructed with: " + john.constructor); 

Sie dann erhalten,

John constructed with: function User() { 
    this.wow = "xxx"; 
} 

statt,

John constructed with: function() { 
    this.wow = "xxx"; 
} 

wo die Chance, dass "User" (den Konstruktor fu zu sehen nction Kennung) kann ein hilfreichen Hinweise geben, während etwas Debuggen später, oder usw.

‚HTH,

Verwandte Themen