Aggiunta di proprietà personalizzate a una funzione

La ricerca di una risposta appropriata si è dimostrata difficile a causa dell’esistenza di molti altri problemi relativi alle mie parole chiave, quindi lo chiederò qui.

Come sappiamo, le funzioni in javascript sono oggetti e hanno le loro proprietà e metodi (più propriamente, istanze di funzione, ereditate da Function.prototype).

Stavo considerando l’aggiunta di proprietà personalizzate per una funzione (metodo), saltiamo il “perché?” parte e vai direttamente al codice:

var something = { myMethod: function () { if (something.myMethod.someProperty === undefined) { something.myMethod.someProperty = "test"; } console.log(something.myMethod); } } 

Quando ispezionato con DOM explorer di Firebug, la proprietà viene definita come previsto. Tuttavia, poiché non mi considero un esperto di javascript, ho le seguenti domande:

  1. Questo metodo può essere considerato “corretto” e conforms agli standard? Funziona in Firefox ma ci sono molte cose che funzionano come previsto nei browser web e non sono affatto standard.
  2. È questo tipo di alterare oggetti aggiungendo nuove proprietà a loro una buona pratica?