2012-02-09 32 views
0

変数内の文字列を使用してJavascriptオブジェクトのプロパティを検索したいが、以下のコードを実行すると、2番目のアラートは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> 

どのように私は、スクリプトの先頭で作成した「Create」プロパティをルックアップするために、「method」変数を使うのですか?

+0

1日100回。誰でも詐欺師は見つかりませんか? – zzzzBov

+3

これは問題ではありません。 –

+0

あなたのスクリプトにはどんなものがありますか? – kapa

答えて

4

は、変数でアクセスしたい場合は、ドット表記を使用することはできません

operations[method]

を試してみてください。理由は、ドット表記法を使用する場合、インタープリターは変数の値を使用していないためです。変数名そのものがキーだと思っています。つまり、「作成」ではなく「メソッド」のキーを探しています。

0

メソッドがオブジェクト宣言で定義されていないため、必要な処理が実行されています。 varメソッドは、ooerations内に含まれていません。あなたは定義したい。

0

Operationsにはメソッドプロパティがありません。あなたがオブジェクトにその値を追加したい場合は、この操作を行うことができます:

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

あなたが特定の文字列のキーの値を取得したい場合は、インデクサでそれを見ることができます:

alert(operations["Create"]); 
0

あなたは実行する必要があります。

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

または

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

私はメソッドを別の文字列オブジェクトとして宣言していると思います。代わりに

var method="Create"; 

のこれは方法あなたはoperations.methodまたはのいずれかからアクセスできるようになります操作オブジェクトの実際のプロパティを行います

operations.method = "Create"; 

をやってみてください操作["メソッド"]

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

alert(operations.Create); 

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

var method = 'Create'; 
alert(method); 
関連する問題