Frage

Ich habe einige Adobe Illustrator javascripts geschrieben meinen Workflow zu verbessern. Ich habe wirklich in den Griff bekommen OOP vor kurzem, damit ich es Objekte mit Schreiben habe und ich glaube wirklich, hilft es, meinen Code sauber zu halten und leicht up-datierbar. Allerdings wollte ich mit euch einige Best-Practice überprüfen.

Ich habe ein Rechteck-Objekt, das erstellt (drei Vermutungen) ... ein Rechteck. Es sieht aus wie dieser


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;
}

Allerdings funktioniert der Code in Ordnung mit oder ohne die letzt

return rect

Also meine Frage ist, was tut

new rectangle(args);
zurück, wenn ich nicht ausdrücklich so sagen?

Wenn ich dies tun:


var myRectangle = new rectangle(args);
myRectangle.left = -100;

Es funktioniert gut, ob ich return rect oder nicht.

Vielen Dank für Sie Hilfe.

War es hilfreich?

Lösung

Ihr Javascript-Objekt sollte nur Eigenschaften und Methoden hat.

Verwenden Sie das Schlüsselwort return innerhalb einer Methode.

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;
    };
}

Wie Sie Ihr Objekt verwenden würden.

var myRectangle = new rectangle(args);
    myRectangle.draw();

Andere Tipps

Absolut unnötig. Eine Instanz wird automatisch erstellt und zugewiesen werden, wenn Sie new nennen. Keine Notwendigkeit, Rückkehr this oder so etwas.

In streng OOP-Sprachen wie Java oder C ++ , Konstrukteuren nichts zurückgeben .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top