2016-09-21 2 views
0

Ich versuche, Objekt in meiner jquery Funktion zu senden und dann seinen Wert in meiner Funktion zu verwenden.kann ich Schlüssel: Wert in der Funktion als Parameter in jquery senden?

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

Ich möchte ähnliche Art und Weise, diese Funktion aufzurufen:

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

ich nur erste Objektwert auf der Konsole erhalten, so wie ich zweite Objektwert erhalten.

Vielen Dank im Voraus.

+3

Ihr Code funktioniert. Alles ist gut. Was ist das Problem? – eisbehr

+0

okay danke Jungs, um meine Zweifel zu klären. :) –

+0

Probieren Sie 'sample ({i: 'foo', e: 'bar'});' – PeterKA

Antwort

1

Wenn Sie anrufen

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

... sampleeine Argument erhalten: Ein Objekt mit den Eigenschaften i und e (deren Werte aus den Werten der Variablen genommen foo und bar ab wann {i:foo,e:bar} wird ausgewertet, bevor es an die Funktion übergeben wird). Sie können also entweder dieses Argument durchlaufen (wie Sie es in Ihrem Beispiel tun, lassen Sie einfach das e Argument, das Sie nicht verwenden) oder verwenden Sie die Eigenschaften direkt. Sie müssen jedoch Ihre Variable deklarieren; gerade jetzt, Ihr Code fällt Opfer The Horror of Implicit Globals(das ist ein Beitrag auf meinem anämischen kleinen Blog).

Beispiel:

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

Danke für die Erklärung und jetzt bin ich klar darüber. –

0

{i:foo,e:bar} wird in i Variable sample Funktion zum ersten Argument geliefert werden, können Sie darauf zugreifen wie i.i und i.e

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

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

0

Wenn Sie

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

rufen Sie mit Eigenschaften i ein neues Objekt sind die Schaffung und e

Die Funktionsdefinition für diese wäre:

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

Aufgrund wie for Loops funktioniert, das funktioniert, aber möglicherweise nicht das, was Sie erwarten:

for(prop in o) { 
    console.log(o[prop]); 
} 
// two outputs, foo and bar 
Verwandte Themen