La création de Nouveaux Objets en JavaScript
Je suis relativement débutant à la programmation orientée objet en JavaScript, et je ne suis pas sûr de la "meilleure" façon de définir et d'utiliser des objets en JavaScript. J'ai vu le "canonique" de manière à définir des objets et instancier une nouvelle instance, comme illustré ci-dessous.
function myObjectType(property1, propterty2) {
this.property1 = property1,
this.property2 = property2
}
//now create a new instance
var myNewvariable = new myObjectType('value for property1', 'value for property2');
Mais j'ai vu d'autres façons de créer de nouvelles instances d'objets de cette manière:
var anotherVariable = new someObjectType({
property1: "Some value for this named property",
property2: "This is the value for property 2"
});
J'aime la façon dont cette seconde manière semble - le code est auto-documentation. Mais mes questions sont:
- Qui est le "mieux"?
- Puis-je utiliser cette deuxième façon de
instancier une variable d'un objet
type qui a été défini à l'aide de la
"classique"façon de définir la
type d'objet avec celle implicite
constructeur? - Si je veux créer un tableau de
ces objets, d'autres
considérations?
Merci d'avance.
il y avait un bon thread à ce sujet il y a quelques jours. stackoverflow.com/questions/1595611/...
Par convention, il est recommandé que la première lettre de "l'objet" des fonctions peuvent être capitalisés.
Par convention, il est recommandé que la première lettre de "l'objet" des fonctions peuvent être capitalisés.
OriginalL'auteur Ken Ray | 2010-04-16
Vous devez vous connecter pour publier un commentaire.
C'est vraiment de goût. De cette façon:
... est généralement mieux si il n'y a plus de 2/3 des arguments, car il contribue à la lisibilité et rend plus facile d'éviter l'argument optionnel problème (
fn(null,null,null,123')
).Une autre considération est la performance. Passer des arguments à la méthode conventionnelle sera plus rapide, mais ce gain de vitesse ne devient significative en très de la performance des situations sensibles.
Pas facilement. Si vous souhaitez instancier un constructeur en utilisant une table de hachage au lieu de simplement le passage d'arguments, et vous n'avez pas de contrôle sur la source, puis vous pourrait "wrap":
Je ne vous recommande vraiment de jouer avec des Api tierces juste pour le plaisir de style.
Quelle est la taille du tableau? Quel est le tableau pour exactement? La Performance pourrait être intéressant d'envisager...
OriginalL'auteur James
Meilleure façon de créer des objets javascript est de cesser d'utiliser les nouvelles (au moins si vous vous abonnez à la crockford camp)
Page 52 de Javascript: Les Bonnes Parties, je vous le recommande vivement 🙂
new function(){...}
est totalement faux! en utilisant l'usine/le générateur de fonctions est bel et bon, maisnew function...
est très mauvais.dire que c'est mal, c'est utile uniquement lorsque vous apportez des arguments 🙂
Juste.
new function(){...}
permettra de créer un nouvel objet dérivé du prototype de la fonction anonyme, et l'utilisation de la fonction anonyme pour l'initialiser. Vous finissez par l'instanciation d'un objet que vous n'avez pas besoin. Ce phénomène ressemble à une faute de frappe pour moi. De toute façon,obj.testing
sera un objet, pas un la fonction, et le message d'alerte sera exécuté sur la création, non pas comme une méthode. L'instanciation d'unnew
fonction anonyme est totalement redondant avec juste de l'affectation d'un nouvel objet ({}
).btw, je savais que c'était déconseillé, ne savait pas vraiment pourquoi. Merci!
OriginalL'auteur Matt Briggs
1) je dirais que la méthode #2 est bien préférable, pour moi en tout cas. L'exemple avec les 2 propriétés n'est pas différent, mais que faire si vous voulez le faire:
Pensez à combien de combinaisons de surcharges (ou de garder une trace de
null
s) que vous auriez à avoir à gérer les propriétés de vous peut ou peut ne pas vouloir d'approvisionnement de l'objet avec la première méthode. C'est un beaucoup plus extensible et souple.2) Simplement le laisser avec un constructeur vide, ce serait beaucoup plus propre pour l'instanciation.
3) la Longueur et la lisibilité, surtout avec plus de quelques objets. Regardez JSON, c'est assez propre et lisible, de nouveau, au moins pour moi, si vous aimez ce style, création de tableaux de vos objets regarde très similaire dans la méthode #2.
OriginalL'auteur Nick Craver
Bien, la deuxième façon agréable et est utile dans le cas d'une "classe" qui a beaucoup d'options de configuration. Cependant, être conscient que vous êtes en train de construire un autre objet dans le processus.
Je vous conseille de lire un peu de code à partir de l'un ou l'autre framework Javascript et trouver un style qui vous plaît.
OriginalL'auteur Pointy