Avatar billede razmuz_dk Nybegynder
28. juni 2006 - 14:06 Der er 15 kommentarer og
2 løsninger

Tilgang til "parent object"

Hej Eksperter,

Jeg sidder her og koger med noget JS-kode.

Jeg har et objekt som opretter 6 nye objekter "i sig selv" ca. således:

Test = function(name) {
  Test.name = name;
  for(i=0; 5>i; i++) {
    this[i] = new Test2();
  }
}

Test2 = function() {
  alert(******);
}

vi_tester = new Test('tæsthæst');


Kan man i Test2-objektet på en eller anden måde få fat i det "overliggende" objekts navn? I ovenstående kode-eksempel vil jeg gerne have fat i tekst-strengen tæsthæst, der hvor der er skrevet ******. Jeg har forsøgt med parent.name - uden held :-)

Håber i forstår, tak!
Avatar billede mclemens Nybegynder
28. juni 2006 - 18:55 #1
Test = function(name) {
  Test.name = name;
  for(i=0; 5>i; i++) {
    this[i] = new Test2(name);
  }
}

Test2 = function() {
  alert(name);
}

vi_tester = new Test('tæsthæst');

... det du mener?
Avatar billede mclemens Nybegynder
28. juni 2006 - 18:56 #2
Ups...

Test=function(name) {
  Test.name = name;
  for(i=0; 5>i; i++) {
    this[i] = new Test2(name);
  }
}

Test2 = function(name) {
alert(name);
}

vi_tester = new Test('tæsthæst');
Avatar billede mclemens Nybegynder
28. juni 2006 - 19:20 #3
eller det her?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

function Test(name) {

newo={'name':name};

  for(i=0;5>i;i++){
    newo[i]=Test2(name);
  }

return newo;
}


function Test2(name){
  return(name);
}

vi_tester=Test('tæsthæst');


alert(vi_tester.name);
alert(vi_tester[1]);
alert(vi_tester[2]);
alert(vi_tester[3]);
alert(vi_tester[4]);

</script>

</head><body>

</body></html>
Avatar billede razmuz_dk Nybegynder
28. juni 2006 - 19:20 #4
Tak for dit svar.

Men nej, det er ikke det jeg mener. Jeg er godt klar over man "bare" kan sende det videre på den måde - og det kan også være det bliver løsningen. Men jeg havde håbet på at man uden at "sende det videre som parameter" kunne gå et niveau op i "objekt-træet" eller hvad man nu skal kalde det :-)
Avatar billede mclemens Nybegynder
28. juni 2006 - 19:22 #5
For at gå et niveau op må du så sende objectet med så du kan gå op i det ... det kan ikke gå op i niveau i ingenting ... laver lige eksemplet om
Avatar billede mclemens Nybegynder
28. juni 2006 - 19:30 #6
Hvad med:

function Test(name) {
newo={'name':name};
  for(i=0;5>i;i++){
    newo[i]=Test2(newo);
  }
return newo;
}

function Test2(newo){
  return(newo.name);
}

vi_tester=Test('tæsthæst');
Avatar billede mclemens Nybegynder
28. juni 2006 - 19:35 #7
Tror jeg har fanget hvad du tænkte på nu ...
Avatar billede mclemens Nybegynder
28. juni 2006 - 19:44 #8
Uhm, nej jeg kan heller ikke løbe op i et object ... det andet med name overførslen forvirede mig lige - du skal dog stadig overføre en forbindelse til objectet som vist ovenover ... men hvis vi nu overfører for en lavere forbindelse som her istedet synes jeg heller ikke at jeg kan løbe baglæns :/


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

function Test(name) {
newo={'name':name,underdir:{underdir:{}}};

  for(i=0;5>i;i++){
    newo[i]=Test2(newo.underdir.underdir);
  }
return newo;
}

function Test2(newopad){
alert(newopad);
alert("øvre niveau test:\n"+newopad.Parent);
alert("øvre niveau test:\n"+newopad.parent);
alert("øvre niveau test:\n"+newopad.offsetParent);
alert("øvre niveau test:\n"+newopad.offsetparent);
alert("øvre niveau test:\n"+newopad.ParentNode);
alert("øvre niveau test:\n"+newopad.Parentnode);


//  return(newopad);
}

vi_tester=Test('tæsthæst');


alert(vi_tester.name);
alert(vi_tester[1]);
alert(vi_tester[2]);
alert(vi_tester[3]);
alert(vi_tester[4]);

</script>

</head><body>

</body></html>
Avatar billede mclemens Nybegynder
28. juni 2006 - 20:09 #9
Hmmm, man kan åbenbart ikke løbe op i ovennævnte tilfælde da det svarer til en overførsel som her:

newarr=[123,212];
så overfører man værdien newarr[1] og så kan man heller ikke komme op da man kun har fået en streng overført - og ikke en reference til array'et eller som den anden objectet ... i den anden overførte jeg blot et tomt underobject men forbindelsen til det øvre object er åbenbart ikke der længere :/
Avatar billede spaceus Nybegynder
29. juni 2006 - 12:55 #10
hvad med at bruge caller
Avatar billede razmuz_dk Nybegynder
29. juni 2006 - 14:56 #11
Clemens > Okay, jeg må bare sende en reference med så.

Spaceus> Hvad er caller? :)
Avatar billede spaceus Nybegynder
30. juni 2006 - 00:51 #12
caller ligger på arguments altså arguments.caller et eksempel

function bleh()
{
this.foo = "bleh"
blah()
}

function blah()
{
alert(arguments.caller)
}

mener jeg
Avatar billede mclemens Nybegynder
30. juni 2006 - 08:31 #13
Hmmm, kan stadig ikke få noget hevet
ud af den så man kan gå op i niveau...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

function Test(name) {
newo={'name':name,underdir:{underdir:{a:"intet"}}};

  for(i=0;5>i;i++){
    newo[i]=Test2();
  }
return newo;
}

function Test2(){
a=arguments.caller;txt="arguments.caller\n";
for(i in a)txt+=i+": "+a[i]+"\n";
alert(txt+"\nName:"+a.name);

return(a.name);
}

vi_tester=Test('tæsthæst');

a=vi_tester;txt="vi_tester\n";
for(i in a)txt+=i+": "+a[i]+"\n";
alert(txt);
</script>

</head><body>

</body></html>

</head><body>

</body></html>
Avatar billede razmuz_dk Nybegynder
09. august 2006 - 16:02 #14
Tak for hjælpen begge to hvert fald :-)

Smid et svar :)
Avatar billede mclemens Nybegynder
09. august 2006 - 16:12 #15
Ok, her er et af dem :)
Avatar billede spaceus Nybegynder
10. august 2006 - 07:57 #16
ok
Avatar billede mclemens Nybegynder
10. august 2006 - 09:38 #17
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Politiets Efterretningstjeneste

IT Sikkerhedsarkitekt i PET

Styrelsen for Grøn Arealomlægning og Vandmiljø

Teamleder til Application Management

Capgemini Danmark A/S

IGNITE Graduate Program 2026

Politiets Efterretningstjeneste

Bliv IT-supporter i PET's IT Servicedesk