2009-09-06 7 views
4

Dans le code:Les valeurs par défaut pour les JSON en JavaScript

slider.init({ 
foo: "bar" 
}); 

var slider={ 
init:function(data){ 
} 
} 

Si je data.foo, je vais obtenir "bar". Supposons que j'ai une variable facultative appelée fish qui peut être incluse dans la variable JSON. Si je référence data.fish, on me dira que c'est indéfini ou qu'une erreur sera lancée ou quelque chose comme ça. Y at-il un moyen que je peux attribuer une valeur par défaut à pêcher de sorte que lorsque je demande data.fish, même si elle n'est pas définie dans le paramètre, j'obtiendrai une valeur par défaut?

Répondre

8

Vous pouvez utiliser l'opérateur d'attribuer des valeurs par défaut dans le cas où le ne sont pas définis, par exemple:

var slider = { 
init:function(data){ 
    var fish = data.fish || "default value"; 
} 
} 

Ou vous pouvez faire une fonction « étendre », de fusionner deux objets, semblable à jQuery extend fonction:

function extend (obj1, obj2) { 
    var result = obj1, val; 
    for (val in obj2) { 
    if (obj2.hasOwnProperty(val)) { 
     result[val] = obj2[val]; 
    } 
    } 
return result; 
} 

var defaults = {val1: 1, val3: 3, fish: 'fish'}; 
extend(defaults, {val2: 2}); // returns Object val1=1 val3=3 fish=fish val2=2 
+1

Ceci est très bon concept, je n'avais aucune idée que vous pourriez le faire, merci. – Vnuk

+0

lol, merci - Je pensais à quelque chose comme ça, mais je ne pouvais pas mettre le doigt dessus - je pensais aussi que ça pourrait renvoyer des erreurs car data.fish serait nul et ne voudrait pas être comparé – jcuenod

Questions connexes