2009-09-06 47 views
4

在代码:默认值的JSON在JavaScript

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

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

如果我使用data.foo,我会得到 “酒吧”。

假设我有一个可选变量,名为fish,它可以包含在JSON变量中。如果我参考data.fish,我会被告知它是未定义的或将会抛出错误或其他东西。有没有一种方法可以为鱼设定一个默认值,以便当我请求data.fish时,即使它没有在参数中设置,我会得到一个默认值?

回答

8

可以使用或操作员的情况下,指定默认值没有定义,例如:

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

或者你也可以做一个“扩展”功能,合并两个对象,类似于jQuery extend功能:

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

这是非常好的概念,我不知道你可以这样做,谢谢。 – Vnuk

+0

大声笑,谢谢 - 我正在考虑这样的事情,但只是不能把它放在我的手指上 - 我还认为它可能会抛出错误,因为data.fish将是空的,它不想被比较 – jcuenod