2011-01-27 12 views
6

http://ejohn.org/blog/building-a-javascript-library/esplicitamente Restituzione di un valore da un costruttore in javascript

nel link qui sotto John Resig suggerisce di chiamare e il ritorno new foo in un costruttore se il chiamante inizialmente dimenticato di.

che ha senso per me, ma poi ottengo un errore severo perché il mio costruttore non restituisce sempre un valore. Dopo aver acquisito un po 'di comprensione dei costruttori in javascript, ho smesso di restituire this perché lo fa automaticamente new.

La mia domanda è, dovrei ...

  1. Non utilizzare la tecnica difensiva descritta?
  2. restituire questo alla fine del mio costruttore?
  3. Opzione misteriosa di cui sono ignorante?

risposta

4

ritorno this è inutile, perché se il chiamante dimenticato di aggiungere new poi this sarà il documento, non è un caso di foo. Quello che faccio di solito è iniziare un costruttore con if(! (this instanceof foo)) return new foo(); o qualcosa in tal senso

Edit: dopo una più attenta lettura, se si vuole evitare errori rigorose e si sta facendo questo già, sì, return this alla fine è di solito una buona idea

+0

giusto, questo è il suggerimento che mi ha portato alla domanda. Se restituisco esplicitamente durante un errore, ricevo un avvertimento rigoroso perché restituisco implicitamente quando tutto va bene – griotspeak

+0

sì, quindi restituirlo se tutto va bene è probabilmente una buona idea – tobyodavies

Problemi correlati