dire che voglio creare la seguente API:Fai la nuova parola chiave opzionale
var api = function(){}
api.prototype = {
constructor: api,
method: function() {
return this;
}
};
Ora, questo funzionerà come:
var myApi = new api();
myApi.method();
Ma diciamo che voglio fare la parola chiave new
opzionale, in modo che questo funzionerà:
api().method();
sarei fuori di testa fare:
var api = function() {
if (!(this instanceof api)) {
return new api();
}
};
Ma mi stavo chiedendo, questo potrebbe essere facilmente infettato in qualche modo, o ci sono altri pericoli nell'usare questo metodo? So che f.ex jQuery non lo fa (scaricano il costruttore su un metodo prototipo), quindi sono sicuro che ci sono buone ragioni per non farlo. Io proprio non li conosco.
La tua soluzione sembra perfettamente a posto, l'ho vista utilizzata in molti posti. Vedi [qui] (http://ejohn.org/blog/simple-class-instantiation/), per esempio. – bfavaretto