javascript - Typescript kompilert kode som bruker nestede og umiddelbart påkallte funksjoner
Jeg prøver å forstå hvorfor følgende:
Jeg har
class User {
wow:String = "xxx";
}
og TypeScript-kompilatoren kompilerer det til
var User = (function () {
function User() {
this.wow = "xxx";
}
return User;
}());
i stedet for
var User = function() {
this.wow = "xxx";
};
Hva er fordelene med å bruke den nestede User-konstruktøren og umiddelbar funksjonskall?
Svar #1
Det kan være flere gode grunner, men jeg mistenker at en av dem er at hvis du kjører følgende vanlige gamle JavaScript (over TypeScripts kompilatorutdata) :
var john = new User();
console.log("John constructed with: " + john.constructor);
du får da,
John constructed with: function User() {
this.wow = "xxx";
}
i stedet for,
John constructed with: function() {
this.wow = "xxx";
}
hvor muligheten til å se den «User» (konstruktørfunksjonens identifikator) kan gi et nyttig hint, mens man feilsøker noe senere, eller lignende.
Håper dette hjelper,
