la création d'un objet en javascript qui a un 'init' méthode avec, en option, des paires nom/valeur
J'ai vu beaucoup de javascript les objets qui ont un "init" de la méthode que vous passez en valeurs dans le but de configuration de l'objet.
Comment font-ils pour gérer en interne les initialisations de leurs variables privées lorsqu'il est passé dans un tableau de paires nom/valeur comme:
myObject.init(
{prop1: "bla", prop2: "asdf", ..., propn: "n"}
);
Plus précisément, certaines de ces valeurs peuvent être en option, alors comment voulez-vous la configuration par défaut et ensuite de les remplacer si la paire nom/valeur a été adoptée lors de l'init.
OriginalL'auteur Blankman | 2009-02-04
Vous devez vous connecter pour publier un commentaire.
Je suppose que si vous avez vraiment besoin de soutien que de cas: cette.foo = options.foo == null ? 'par défaut' : options.foo;
Est init la seule fonction qui peut utiliser cette syntaxe? ou pourrait-on définir une autre fonction à l'aide de nomfonction: function(passedParam){}?
Il n'y a rien de spécial au sujet d'une fonction nommée
init
. Toute fonction peut utiliser ce modèle.OriginalL'auteur Alex Wayne
La façon la plus propre je pense, serait d'utiliser les valeurs par défaut de l'objet qui contient toutes les propriétés par défaut comme suit:
Vous pouvez même effectuer une itération sur l'objet par défaut à l'aide d'une boucle for, de sorte que vous n'avez pas à garder une trace des propriétés de l'objet à contenir.
Vous devez utiliser l'opérateur "in" depuis qu'il est réellement possible de définir la valeur d'une propriété non définie. Il est valable pour définir une propriété non définie et dans ce cas, il est effectivement considéré défini, la seule façon de s'assurer que la valeur n'a pas été fixée est de vérifier qu'il n'est pas dans l'objet.
OriginalL'auteur Michael Roberts
Ce tests ok sur FF5, IE8, Chrome 12, Opera v11.5. Il n'a pas d'importance ce que les valeurs par défaut sont, ils seront écrasés si leur clé est dans la liste d'appel, si ce n'est qu'ils seront laissés seuls.
OriginalL'auteur Anon
Mieux encore, obtenir la méthode init de l'objet de sorte que vous pouvez utiliser init pour d'autres objets.
Ce tests ok sur FF5, IE8, Chrome 12, Opera v11.5. Il n'a pas d'importance ce que les valeurs par défaut sont, ils seront écrasés si leur clé est dans la liste d'appel, si ce n'est qu'ils seront laissés seuls.
OriginalL'auteur Anon
oh permet de voir
edit: mise à jour, cela fonctionne
droit, fixe, merci 🙂
toujours en panne, ce que si je passe {abc:0}? J'obtiens la valeur par défaut à la place.
heh, bonne prise Paul, je me demande combien d'occurrences de ce que j'ai dans le vieux code! De toute façon, je l'ai corrigé, ce n'est pas assez, mais il fonctionne.
Utilisation de l'identité de comparaison !== pour la comparaison avec les undefined.
OriginalL'auteur Allen Rice
Vous pouvez utiliser un opérateur ternaire pour vérifier si un élément de l'initialisation de la matrice est définie, et l'utiliser si elle est, ou utiliser une valeur par défaut si pas. Par exemple, en supposant que les données d'initialisation est passé comme un objet appelé
init
....Alternativement, vous pouvez simplement copier init tableau substituant les valeurs définies précédemment
Noter qu'un idiome comme
Échoue si opte.toto est réglé à une valeur qui correspond à la valeur false, par exemple 0
OriginalL'auteur Paul Dixon