开发者

Should a javascript class explicitly return something?

I've been writing some Adobe Illustrator javascripts to improve 开发者_JAVA技巧my workflow. I've been really getting to grips with OOP recently so I've been writing it using objects and I really think it helps keep my code clean and easily up-datable. However I wanted to check some best practice with you guys.

I have a rectangle object which creates (three guesses)... a rectangle. It looks like this


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

However the code works fine with OR without that last

return rect

So my question is what does

new rectangle(args);
return if I don't explicitly say so?

If I do this:


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

It works just fine wether I return rect or not.

Many thanks for you help.


Absolutely unnecessary. An instance will be created and assigned automatically when you call new. No need to return this or anything like that.

In strictly OOP languages like Java or C++, constructors do not return anything.


Your javascript object should only have properties and methods.

Use the return keyword inside a method.

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

How you would use your object.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜