2012-02-09 403 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);