quelle est la différence dans la construction de ces deux objets - en dehors de la vie privée de la variable membre?Construction d'objet Javascript: quelle est la différence?
function A() { this.a = 99; }
A.prototype.setA = function(newVal) { this.a = newVal; }
A.prototype.getA = function({ return this.a; }
Et ceci:
function A() {
var a = 99;
return {
setA: function(newVal) { a=newVal; }
getA: function() { return a; }
}
}
Je ne suis pas intéressé à la vie privée de la variable membre tant que la façon dont les fonctions sont définies. Ai-je raison de penser que dans la deuxième version, tous les objets créés via le nouveau A() recevront des copies des fonctions définies, où comme dans la première version, tous les appels aux fonctions définies iront au seul et unique prototype objet (pour l'objet A). Est-ce correct?
Si oui, la version 2 a-t-elle des coûts de performance?
Également, est-ce qu'une méthode est préférée à une autre - ou y a-t-il une meilleure façon de procéder?
Merci beaucoup
Setters & getters sont une idée horrible. Arrêtez de porter le code Java en javascript. – Raynos
@Raynos, pas trop horrible pour être inclus dans ES5. – davin
@davin c'est différent. Ce sont des getter/setters natifs (ils sont encore méchants). Les émulés comme 'setA' et' getA' sont plus que stupides. Les getter/setters natifs ne devraient vraiment être utilisés que pour faire des trucs intelligents, pas dans le code quotidien – Raynos