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

ritorno
new 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.

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top