Comment obtenir de la valeur de Object, avec valeur par défaut

Je me trouve constamment en train de passer des valeurs de configuration aux fonctions qui les accèdent comme ceci:

var arg1 = 'test1'; if(isUndefined(config.args.arg1)){ arg1 = config.args.arg1; } var arg2 = 'param2'; if(isUndefined(config.args.arg2)){ arg2 = config.args.arg2; } var arg3 = '123'; if(isUndefined(config.args.arg3)){ arg3 = config.args.arg3; } 

Où je les utilise plus tard comme suit:

 var url = '<some-url>?id='+arg1+'&='+arg2 +'=' + arg3; 

Est-ce que jQuery / ExtJS ou tout autre cadre fournit une solution pour accéder à des variables comme celle-ci de manière simple, et donner aux variables une valeur par défaut?

Quelque chose comme:

 getValueOfObject(config,'args.arg3','<default>'); 

Ou est-ce qu'il y a peut-être une solution standard pour cela.

REMARQUE:

Je pensais également au modèle commun où vous avez des valeurs par défaut

 var defaults = { args: { args1: .... } ... } 

Et faire une fusion d'objet.

Ensuite, encodage de l'objet à un paramètre String. Mais comme vous pouvez le voir, les valeurs des objets contiennent parfois des noms de paramètres.

Généralement, on peut utiliser l' opérateur ou pour attribuer une valeur par défaut lorsqu'une variable évalue faussement:

 var foo = couldBeUndefined || "some default"; 

alors:

 var arg1 = config.args.arg1 || "test"; var arg2 = config.args.arg2 || "param2"; 

En supposant que config.args soit toujours défini, comme l'indique votre code d'exemple.

On dirait finalement lodash la fonction _.get () pour cela!

Essayez var options = extend(defaults, userOptions);

De cette façon, vous obtenez toutes les options d'utilisation et retomrez les valeurs par défaut lorsqu'elles ne passent aucune option.

Notez utiliser toute extend mise en œuvre que vous souhaitez.