javascript如何使用变量来引用一个对象

时间:2012-04-29 01:41:28

标签: javascript object

我有一个像这样的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
}

我真的很想了解这里发生了什么。理想情况下,我想参考我的 具有传递给函数的值的对象。 感谢

2 个答案:

答案 0 :(得分:1)

我只能假设您的变量some_value不得包含值a。它可能有额外的空格字符。

答案 1 :(得分: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
}

你可以做一个“宽松的检查”,但它不可靠,因为任何“假”都会称之为“不存在”,即使有价值。

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