2012-04-29 66 views
0

我有一个JavaScript对象这样的JavaScript如何使用一个变量引用一个对象

var obj={ 
    a:{x: "someValue", y:"anotherValue"}, 
    b:{x: "bValue", y:"anotherbValue"} 
}; 

,我试图像这样引用它

function(some_value){ 
    alert("some_value is " + some_value + " with type " + typeof some_value); 
    // prints some_value is a with type string 
    var t; 
    t=obj[some_value]["x"]; // doesn't work 
    some_value="a"; 
    t=obj[some_value]["x"]; // this does work 
    t=obj["a"]["x"];  // and so does this 
} 

我真的想了解什么是去这里。理想情况下,我想引用我 对象与传递给函数的值。 感谢

+0

对不起,有一个错字 - 实际代码中最后一个对象没有两个双引号 – sferret 2012-04-29 01:43:50

+3

您可以编辑您的问题。 http://stackoverflow.com/posts/10369028/edit – 2012-04-29 01:44:12

+1

如果'some_value'确实' “一个”','然后T = OBJ [SOME_VALUE] [ “×”];'将工作。 – 2012-04-29 01:46:21

回答

1

我只能假设你的变量some_value不得包含价值a。它可能有多余的空白字符。

+0

1好像它可能是一个空白问题由'alert'的输出判断。 – 2012-04-29 01:47:43

+0

是的,这是它 - 谢谢你,至少我不会忘了再次检查,因为我一直在用它摆弄的年龄。 – sferret 2012-04-29 15:08:55

0

在JS,当属性不存在,它返回一个undefined。在下面的代码的情况下,如果包含在变量some_value值不存在为obj属性,t是不确定的

//if some_value is neither a nor b 
t = obj[some_value] // t === undefined 

,如果你尝试从undefined值提取属性,浏览器报告错误:

//if some_value is neither a nor b 
t = obj[some_value]["x"] // error 

在尝试使用hasOwnProperty()访问它之前,您可以检查属性的存在。

if(obj.hasOwnProperty(somevalue)){ 
    //exists 
} else { 
    //does not exist 
} 

你可以做一个“松散检查”,但它并不可靠,因为任何事情“falsy”将它称为“子虚乌有”即使有一个值。

if(obj[somevalue]){ 
    //is truthy 
} else { 
    //obj[somevalue] either: 
    //does not exist 
    //an empty string 
    //a boolean false 
    //null 
    //anything "falsy" 
} 
+0

感谢,我用你的建议hasOwnProperty,并发现它返回false,SOME_VALUE =“my_lookup_value”空白! Ahggg – sferret 2012-04-29 15:13:14

相关问题