2010-10-13 4 views
1

J'ai écrit des scripts java Adobe Illustrator pour améliorer mon flux de travail. J'ai récemment commencé à me familiariser avec la POO, donc je l'ai écrit en utilisant des objets et je pense vraiment que cela aide à garder mon code propre et facile à mettre à jour. Cependant, je voulais vérifier les meilleures pratiques avec vous.Une classe javascript doit-elle renvoyer explicitement quelque chose?

J'ai un objet rectangle qui crée (trois suppositions) ... un rectangle. On dirait que cette


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

Cependant, le code fonctionne bien avec ou sans cette dernière

return rect

Alors ma question est qu'est-ce que

new rectangle(args);
retour si je ne dis pas explicitement?

Si je fais ceci:

 

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

Il fonctionne très bien wether je return rect ou non.

Un grand merci pour votre aide.

+1

vous pouvez augmenter ma réponse en cliquant sur la flèche du haut. Vous devez accepter les réponses à votre question en cliquant sur la coche vide à côté de ma réponse. –

+0

J'ai essayé de l'upvoter mais je n'ai pas assez de réputation j'ai peur. Pouvez-vous accepter plus d'une réponse? J'avais cru comprendre que vous attendiez un moment et que vous acceptiez le meilleur? Votre réponse était excellente, mais je ne sais pas encore ce que les autres diront. Ou est-ce que je ne comprends pas? – MrMisterMan

Répondre

0

Votre objet javascript ne devrait avoir que des propriétés et des méthodes.

Utilisez le mot-clé return dans une méthode.

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

Comment utiliser votre objet.

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

J'ai développé un jeu de pong en javascript et cette méthode est ce que j'utilise ici. Je ne sais pas pourquoi je ne fais pas la même chose dans mon script Illustrator. Une raison que je suppose, c'est que c'est moins verbeux sans la méthode draw. Cela compte-t-il? – MrMisterMan

1

Absolument inutile. Une instance sera créée et affectée automatiquement lorsque vous appelez new. Pas besoin de retourner this ou quelque chose comme ça.

Dans strictement langues POO comme Java ou C++, les constructeurs ne reviennent pas quoi que ce soit.

+1

Super, merci! Je ne savais pas que les constructeurs de POO strictes ne retournaient rien. – MrMisterMan

+1

Les méthodes à l'intérieur du constructeur peuvent renvoyer 'this' pour de l'aide en cascade d'appels de fonction. –

+0

@Ravindra bon point. –

Questions connexes