2016-09-21 61 views
0

我想在我的jquery函數中發送對象,然後在我的函數中使用它的值。我可以發送鍵:在函數中的值作爲參數在jQuery中?

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

我想調用這個函數像這樣:

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

我只得到控制檯上的第一個對象的值,所以我怎麼獲得第二個對象的價值。

在此先感謝。

+3

您的代碼有效。一切安好。有什麼問題? – eisbehr

+0

好的,謝謝你們清除我的懷疑。 :) –

+0

嘗試'樣品({我:'富',電子:'酒吧'});' – PeterKA

回答

1

當你調用

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

... sample接收一個參數:與屬性ie的對象(其值從變量foo的值取和bar{i:foo,e:bar}的在被傳遞給函數之前被評估)。所以你可以循環這個參數(就像在你的例子中做的那樣,只是拋棄你沒有使用的參數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

當你調用

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

要創建具有屬性i一個新的對象和e

這個函數的定義是:

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 
相關問題