Avatar billede t_madsen Nybegynder
11. juni 2006 - 21:23 Der er 13 kommentarer og
1 løsning

Omdøb objekt?

Hej,

Jeg er kommet i den situation, at jeg har brug for at omdøbe et objekt i javascript. Jeg har prøvet noget, der ligner følgende:

function testObject() { }

var test1 = new testObject();
var test2 = new testObject();
var test3 = new testObject();

var test1Backup = new testObject();
var test2Backup = new testObject();
var test3Backup = new testObject();

test1.prop1 = 120;
test1.prop2 = 400;

test2.prop1 = 240;
test2.prop2 = 400;

test3.prop1 = 360;
test3.prop2 = 400;

testObject[test1Backup] = testObject[test1];
testObject[test2Backup] = testObject[test2];
testObject[test3Backup] = testObject[test3];

testObject[test1] = testObject[test2Backup];
testObject[test2] = testObject[test3Backup];
testObject[test3] = testObject[test1Backup];

Problemet er selvfølgelig at det ikke virker, men er der nogle derude der kan fortælle mig hvorfor? Er det fordi man bare ikke kan sætte objekter lig hinanden overhovedet, har det noget med syntaks at gøre eller noget helt tredje? Jeg har ledt nettet tyndt efterhånden, måske søger jeg forkert, men faktum er, at det er ved at være så frustrerende at jeg får mareridt om det, hjælp! :)
Avatar billede moocher Nybegynder
11. juni 2006 - 21:34 #1
Jeg ville starte med at placere {} rigtigt :P

Du har ikke flyttet } til slutningen af funktionen
Avatar billede moocher Nybegynder
11. juni 2006 - 21:35 #2
som i

function testObject() {

...
...
..

}
Avatar billede t_madsen Nybegynder
11. juni 2006 - 21:42 #3
function testObject() { }

er en tom funktion, som bruges til at oprette objekter med, derfor:

var test1 = new testObject();
var test2 = new testObject();
var test3 = new testObject();

var test1Backup = new testObject();
var test2Backup = new testObject();
var test3Backup = new testObject();
Avatar billede moocher Nybegynder
11. juni 2006 - 21:45 #4
Så må jeg melde pas :(
Avatar billede psykochicken Nybegynder
11. juni 2006 - 23:12 #5
jeg er ikke sikker på jeg forstår dit spørgsmål.....hvilke objekter er det du ønsker at "omdøbe", til hvad, hvornår og hvordan ?

/psc
Avatar billede mclemens Nybegynder
11. juni 2006 - 23:54 #6
Jeg forstår desværre heller ikke hvad du vil?

... denne her virker, men det er måske ikke det
ønske du har eller hvad skal koden gøre præcis?


<script type="text/javascript">

function testObject() { }

var test1 = new testObject();
var test2 = new testObject();
var test3 = new testObject();

var test1Backup = new testObject();
var test2Backup = new testObject();
var test3Backup = new testObject();

test1.prop1 = 120;
test1.prop2 = 400;

test2.prop1 = 240;
test2.prop2 = 400;

test3.prop1 = 360;
test3.prop2 = 400;


testObject[test1Backup] = test1;
testObject[test2Backup] = test2;
testObject[test3Backup] = test3;

testObject[test1] = test2Backup;
testObject[test2] = test3Backup;
testObject[test3] = test1Backup;

alert(testObject[test1Backup]);
alert(testObject[test2Backup]);
alert(testObject[test3Backup]);
</script>
Avatar billede mclemens Nybegynder
11. juni 2006 - 23:57 #7
uhm, næh lavede vist selv en fejl der...
men , øhm skal koden overføre værdierne
fra det ene object til det andet?
Avatar billede mclemens Nybegynder
12. juni 2006 - 00:13 #8
Hvis du alerter
alert(testObject[test1]);
- i bunden af din oprindelige kode
ville du se at dit object ikke hedder
testObject[test1] ... det hedder test1 :o)




<script type="text/javascript">

var testObject = function(){};

var test1 = new testObject();
var test2 = new testObject();
var test3 = new testObject();

var test1Backup = new testObject();
var test2Backup = new testObject();
var test3Backup = new testObject();

test1.prop1 = 120;
test1.prop2 = 400;

test2.prop1 = 240;
test2.prop2 = 400;

test3.prop1 = 360;
test3.prop2 = 400;

test1Backup = test1;
test2Backup = test2;
test3Backup = test3;

test1 = test2Backup;
test2 = test3Backup;
test3 = test1Backup;

alert(test3Backup.prop1);

</script>


Så overføres objectet...
... but why loop the loop ?
Avatar billede mclemens Nybegynder
12. juni 2006 - 00:28 #9
Det her var sikkert det du tænkte på...
- et object i et object ... men stadig ... hvorfor?



<script type="text/javascript">

var testObject = {};

testObject.test1= {};
testObject.test2 = {};
testObject.test3 = {};

testObject.test1Backup = {};
testObject.test2Backup = {};
testObject.test3Backup = {};

testObject.test1.prop1 = 120;
testObject.test1.prop2 = 400;

testObject.test2.prop1 = 240;
testObject.test2.prop2 = 400;

testObject.test3.prop1 = 360;
testObject.test3.prop2 = 400;

testObject.test1Backup = testObject.test1;
testObject.test2Backup = testObject.test2;
testObject.test3Backup = testObject.test3;

testObject.test1 = testObject.test2Backup;
testObject.test2 = testObject.test3Backup;
testObject.test3 = testObject.test1Backup;

alert(testObject.test1Backup);
alert(testObject.test1Backup.prop1);
alert(testObject.test2.prop1);



</script>
Avatar billede mclemens Nybegynder
12. juni 2006 - 00:40 #10
Nåh, kaster lige et svar:
Ja, man kan overføre objecter :)
Avatar billede mclemens Nybegynder
12. juni 2006 - 00:46 #11
Lige et p.s. den fejler åbenbart hvis man bruger []
notationen istedet for . notationen ved objecter...
Avatar billede mclemens Nybegynder
12. juni 2006 - 01:00 #12
Kaster også lige denne hvis det mere
var det format du ville have scriptet i...



<script type="text/javascript">

function testObject() { }

var test1 = new testObject();
var test2 = new testObject();
var test3 = new testObject();


var test1Backup = new testObject();
var test2Backup = new testObject();
var test3Backup = new testObject();

test1.prop1 = 120;
test1.prop2 = 400;

test2.prop1 = 240;
test2.prop2 = 400;

test3.prop1 = 360;
test3.prop2 = 400;

test1Backup = test1;
test2Backup = test2;
test3Backup = test3;

test1 = test2Backup;
test2 = test3Backup;
test3 = test1Backup;

alert(test2.prop1);
alert(test2.prop2);
alert(test2Backup.prop1);
alert(test2Backup.prop2);

</script>
Avatar billede t_madsen Nybegynder
12. juni 2006 - 01:45 #13
tak for det
Avatar billede mclemens Nybegynder
12. juni 2006 - 02:13 #14
Velbekom, og 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

Netcompany A/S

Test Specialist

Udviklings- og Forenklingsstyrelsen

Generalist med flair for økonomi i projekter og drift

Queue-it ApS

Team Lead Engineering

Metroselskabet og Hovedstadens Letbane

Cyber Security Konsulent