In JavaScript, mi piace la convenzione di denominazione di PascalCase per le funzioni di costruzione e camelCase per altre funzioni. Sembra che ReSharper sia configurato per queste impostazioni. Tuttavia, per il codice come questo:Avvisi reSharper per convenzione di denominazione JavaScript sulle funzioni di costruzione
function Thing(a, b) {
return {
prop1: a,
prop2: b
};
}
var thing = new Thing(2, 6);
... ricevo questo avvertimento:
Nome 'cosa' non non corrisponde regola 'funzione locale'. Il nome suggerito è "cosa".
Non fa differenza se cambio Thing
a questo:
function Thing(a, b) {
this.prop1 = a;
this.prop2 = b;
}
Ho il sospetto che solo le funzioni "pubbliche" sono considerati costruttori. Qualcuno di voi sa come ReSharper distingue tra una funzione "Locale" e "Costruttore"? Ancora meglio, sai come sovrascrivere questo comportamento?
Grazie per aver trovato la segnalazione di errore. Ho una domanda però: come è la funzione precedente * not * a constructor? Se una funzione restituisce un valore quando viene chiamato con 'new', quel valore restituito diventa" questo "per l'oggetto creato. Inoltre, scrivendo in questo modo, si ottiene lo stesso risultato sia che lo si chiami con 'nuovo' o senza. – Jacob
@Jacob perché non costruisce oggetti di "Cosa", restituisce oggetti di "Oggetto". In JS un costruttore può restituire un'istanza di qualsiasi "classe" e restituire un oggetto letterale è un caso particolare in cui tale funzione consente di negare del tutto il punto di costruttori e prototipi. – Esailija
Ha senso. Grazie per la spiegazione. – Jacob