Nel caso di una classe javascript tornare esplicitamente qualcosa?
-
29-09-2019 - |
Domanda
Ho scritto alcuni JavaScript Adobe Illustrator per migliorare il mio flusso di lavoro. Sono stato davvero alle prese con OOP recentemente così ho scritto utilizzando gli oggetti e credo davvero che aiuta a mantenere il mio codice pulito e facilmente aggiornabile. Tuttavia ho voluto verificare alcune delle migliori pratiche con voi ragazzi.
Ho un oggetto rettangolare che crea (tre tentativi) ... un rettangolo. Sembra che questo
function rectangle(parent, coords, name, guide) {
this.top = coords[0];
this.left = coords[1];
this.width = coords[2];
this.height = coords[3];
this.parent = (parent) ? parent : doc;
var rect = this.parent.pathItems.rectangle(this.top, this.left, this.width, this.height);
rect.name = (name) ? name : "Path";
rect.guides = (guide) ? true : false;
return rect;
}
Tuttavia, il codice funziona bene con o senza che lo scorso
return rect
Quindi la mia domanda è che cosa fa
ritornonew rectangle(args);
se non esplicitamente detto così?
Se faccio questo:
var myRectangle = new rectangle(args);
myRectangle.left = -100;
Funziona bene wether ho return rect
oppure no.
Molte grazie per aiuto.
Soluzione
Il vostro oggetto JavaScript dovrebbe avere solo proprietà e metodi.
Usa la parola chiave return all'interno di un metodo.
function rectangle(parent, coords, name, guide) {
this.top = coords[0];
this.left = coords[1];
this.width = coords[2];
this.height = coords[3];
this.parent = (parent) ? parent : doc;
this.draw = function () { // add a method to perform an action.
var rect = this.parent.pathItems.rectangle(this.top, this.left, this.width, this.height);
rect.name = (name) ? name : "Path";
rect.guides = (guide) ? true : false;
return rect;
};
}
Come si usa l'oggetto.
var myRectangle = new rectangle(args);
myRectangle.draw();
Altri suggerimenti
Assolutamente inutili. Un esempio sarà creato e assegnato automaticamente quando si chiama new
. Non c'è bisogno di this
ritorno o qualcosa di simile.
strettamente OOP linguaggi come Java o C ++ , costruttori non restituire nulla .