2012-02-09 72 views
0

我想使用变量内部的字符串查找Javascript对象的属性,但是当我执行下面的代码时,第二个警报返回undefined使用字符串变量按名称查找属性

<script> 
    var operations = {"Create": "POST", 
         "Read": "GET", 
         "Delete": "DELETE" 
    }; 
    //result POST 
    alert(operations.Create); 

    var method="Create"; 
    alert(operations.method); //returns undefined, I want it to return "POST" 
</script> 

如何使用“method”变量来查找我在脚本的开始创建的“Create”属性?

+0

每天100次。任何人都可以找到任何骗局 – zzzzBov 2012-02-09 15:43:45

+3

这不是一个问题。 – 2012-02-09 15:44:55

+0

你对你的剧本有什么期望? – kapa 2012-02-09 21:59:58

回答

4

尝试

operations[method]

,如果你想通过一个变量来访问你不能用点号。原因是当你使用点符号时,解释器没有使用变量的值;它认为变量名本身就是关键。换句话说,它正在寻找关键的“方法”,而不是“创建”。

0

方法没有在你的对象声明中定义,所以它正在做它应该做的。 var方法不包含在这些操作中。你想定义。

0

Operations没有方法属性。如果你想该值添加到您的对象,你可以这样做:

alert(operations["Create"]); 

operations.method = "Create"; 
alert(operations.method); 

如果你想获得一个特定的字符串键的值,可以通过索引查找它

0

你应该这样做:

var method=operations.Create; 
alert(method); 

var method="Create"; 
alert(operations[method]); 
0

我相信你声明的方法是一个单独的字符串对象。取而代之的

var method="Create"; 

尝试做

operations.method = "Create"; 

这将使方法操作的实际属性对象,你将能够从operations.method访问要么操作[“方法”]

0
var operations = {"Create" : "POST", 
        "Read" : "GET", 
        "Delete" : "DELETE" 
       }; 

alert(operations.Create); 

operations.method = 'Create'; 
alert(operations.method); 

var method = 'Create'; 
alert(method);