2016-09-21 1 views
0

私のjquery関数でオブジェクトを送信しようとしているし、私の関数でその値を使用しています。私は、コンソール上の最初のオブジェクトの値を取得私はkey:valueを関数としてjqueryのパラメータとして送ることができますか?

sample({i:foo,e:bar}); 

ので、どのように私は2番目のオブジェクトの値を取得する:

function sample(i,e){ 
    for(prop in i) { 
    console.log(i[prop]); 
    } 
} 

私はこの方法のように、この関数を呼び出したいです。

ありがとうございます。とき{i:foo,e:bar}のようその値は変数の値から取られるプロパティieを持つオブジェクト(foobar

+3

コードは機能します。すべて順調。どうしたの? – eisbehr

+0

大丈夫、私の疑いを晴らす人に感謝します。 :) –

+0

試してみてください。サンプル({i: 'foo'、e: 'bar'}); ' – PeterKA

答えて

1

あなたは

sample({i:foo,e:bar}); 

を呼び出す... sample1つの引数を受け取ります関数に渡される前に評価されます)。したがって、あなたはあなたの例のようにその引数をループするか、使用していない引数のeを投げ捨てるか、または直接プロパティを使うことができます。あなたはprop変数を宣言する必要があります。今すぐあなたのコードはThe Horror of Implicit Globals(私の貧血小さなブログの投稿です)に落ちています。

例:

function sample(obj){ 
 
    var key; 
 
    for (key in obj) { 
 
    console.log(key + ": " + obj[key]); 
 
    } 
 
    
 
    console.log("Direct access - i: " + obj.i); 
 
    console.log("Direct access - e: " + obj.e); 
 
} 
 

 
var foo = "this is foo"; 
 
var bar = "this is bar"; 
 
sample({i:foo,e:bar});

+0

説明をいただきありがとうございます。 –

0

{i:foo,e:bar}sample機能のi変数で最初の引数に供給され、あなたはi.iのようにアクセスすることができますし、i.e

function sample(i){ 
 
    for(prop in i) { 
 
    console.log(i[prop]); 
 
    } 
 
} 
 

 
sample({i:"foo",e:"bar"});

0

あなたは、このための関数定義は次のようになり性質ie

で新しいオブジェクトを作成している

sample({i:foo, e:bar}); 

を呼び出す:によりどのように

function sample(o) { 
    console.log(o.i); // == foo 
    console.log(o.e); // == bar 
} 

forループが動作しますが、これはうまくいきますが、あなたが期待しているものではないかもしれません:

for(prop in o) { 
    console.log(o[prop]); 
} 
// two outputs, foo and bar 
関連する問題