Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Nov 2002

Javascript och websidor

Jag är relativt grön på java men försöker förstå hur det fungerar. Jag har en java kod som till stor del är skriven av en annan som jag få ändra på. Jag har nu stött på en sån sak som jag tror att är någon form av subfunktion till en parent funktion.

Dvs. jag har en funktion som deklarerats

function master() { ***kod***}

Det följs av ett flertal instanser som ser ut som då en form av sub funktioner till "master", t.ex.

master.prototyp.fixa = function() { ***kod*** }
master.prototyp.testa = function() { ***kod*** }

Har jag förstått rätt att de senare nämnda är någon form av subfunktion till "master". Jag ser att i de flesta instanser så används variabler från "master" genom this.[variabel namn]. Kan någon vägleda mig till var jag hittar information, sökte på google men vet inte riktigt vad det är jag exakt skall söka på.

Mitt riktiga problem är att jag försöker skapa en egen "sub funktion", typ

master.prototyp.change = function() { ***kod*** }

Jag kan kalla på den funktionen t.ex. med en knapp och onClick="master.prototype.change()" och får den att göra ändring i t.ex. ett text fält. Men när jag försöker få information av "master" variabler till en sub funktions egen variabel så får jag ständigt felmeddelande att sub variabeln inte är deklarerad i det skede som jag vill använda den.

Hoppas någon har en aning om vad jag försöker säga och skulle kunna ge en knuff i rätt riktning

Hp Workstation Z800, DUAL Xeon X5570, 24GB RAM, Asus GTX660, 2 x 128GB SSD + 150GB Velociraptor
Server: AthlonII X4, 4GB DDR1333, GF 7200GS, 2,5" 500GB 5,4krpm för OS.

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012

Det här är definitivt JavaScript och inte Java. Ändra inlägget för att minska förvirring.

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
Phenom II X4 965@3900MHz (Sommarklock)
GTX 760@1111MHz

Ibland har jag fel, men då är det någon annans fel.

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Nov 2002
Skrivet av LemonIllusion:

Det här är definitivt JavaScript och inte Java. Ändra inlägget för att minska förvirring.

Bra point! Ändrat

Hp Workstation Z800, DUAL Xeon X5570, 24GB RAM, Asus GTX660, 2 x 128GB SSD + 150GB Velociraptor
Server: AthlonII X4, 4GB DDR1333, GF 7200GS, 2,5" 500GB 5,4krpm för OS.

Trädvy Permalänk
Medlem
Plats
Småland
Registrerad
Jan 2003

@warzo: funktioner som är deklarerade i master.prototype måste anropas så här för att få tillgång till master's variabler:

master.prototype.nyfunktion = function() {}; var test = new master(); test.nyfunktion();

Om det är statiska funktioner du är ute efter så borde du lägga dem som t.ex master.statiskfunktion = function() {}; men då kommer du inte heller åt variabler som inte är statiska på objektet.

Hoppas jag var till någon hjälp.

MVH Freezer

Intel i7 5820k @ 4,5 GHz ][ Kraken X62 ][ Asus X99-A ][ 32 GB Corsair ][ Sapphire RX480 4GB ][ SB X-fi Fatal1ty ][ Samsung 850Pro 512 GB ][ Corsair RM650 ][ Corsair 400Q ][ Asus MG278Q

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Nov 2002
Skrivet av Freezer:

@warzo: funktioner som är deklarerade i master.prototype måste anropas så här för att få tillgång till master's variabler:

master.prototype.nyfunktion = function() {}; var test = new master(); test.nyfunktion();

....

MVH Freezer

Vad jag söker är att i master.prototype.nyfunktion = function() {}; få en variabel för användning.

Något typ

master.prototype.nyfunktion = function() { var nyVariabel = master.variabel; };

Vet inte om jag riktigt får fram exakt vad det är jag är ute efter på rätt sätt. Och i det här fallet skulle nyVariabel behöva kunna vara en array vid behov.

Hp Workstation Z800, DUAL Xeon X5570, 24GB RAM, Asus GTX660, 2 x 128GB SSD + 150GB Velociraptor
Server: AthlonII X4, 4GB DDR1333, GF 7200GS, 2,5" 500GB 5,4krpm för OS.

Trädvy Permalänk
Medlem
Plats
Småland
Registrerad
Jan 2003

@warzo: Vet inte om jag förstår dig rätt men om du sätter t.ex master.variabel = [0, 10]; så kommer master.variabel alltid vara = [0, 10] oavsett var du anropar den. Vill du däremot ha olika värden på olika instanser utav master så får du sätta this.variabel = [0, 10]; någonstans inne i en funktion i master.prototype.
Javascript har inga typade variabler utan de kan innehålla vad som helst, master.variabel = 0; master.variabel = ['sträng']; fungerar t.ex båda två utan några problem.

Hjälpte det något?

MVH Freezer

Intel i7 5820k @ 4,5 GHz ][ Kraken X62 ][ Asus X99-A ][ 32 GB Corsair ][ Sapphire RX480 4GB ][ SB X-fi Fatal1ty ][ Samsung 850Pro 512 GB ][ Corsair RM650 ][ Corsair 400Q ][ Asus MG278Q

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Nov 2002

@Freezer:

Du börjar vara på rätt spår skulle jag säga. Det som du skrev hjälpte inte direkt men för att förtydliga mig själv lite så ser mitt problem ut som följande.

function master() { var mastervariabel = [1, 8, 10]; } master.prototyp.nyfunktion = function() { var nyvariabel = this.mastervariabel; }

Men när jag sedan anropar nyvariabel inne i master.prototyp.nyafunktionen så får jag felkoden att nyvariabel aldrig aldrig är deklarerad.

Typ:

master.prototyp.nyfunktion = function() { var nyvariabel = this.mastervariabel; document.getElementById('värdet').value=nyvariabel; <--- denna linje ger felkod att nyvariabel aldrig är deklrarerad. }

Däremot om jag tar bort raden ovan som skall hämta in nyvariabel från parent funktionen och iställe deklarerar dit ett värde t.ex. 5 så finns värdet där. Så av någon anledning så får jag inte mastervariabel värdena in i min nydeklarerade variabel. Hänger du med i vad jag försöker säga.. låter oredigt i mitt huvud, men jag kommer inte på ett bättre sätt att förklara det.

Jag tackar för ditt tålamod att försöka hjälpa mig här!

Hp Workstation Z800, DUAL Xeon X5570, 24GB RAM, Asus GTX660, 2 x 128GB SSD + 150GB Velociraptor
Server: AthlonII X4, 4GB DDR1333, GF 7200GS, 2,5" 500GB 5,4krpm för OS.

Trädvy Permalänk
Medlem
Plats
Småland
Registrerad
Jan 2003

@warzo: Jag hänger inte riktigt med på vad det är du försöker göra men här är iallafall två exempel på hur du ska kunna använda mastervariabel:

#1:

function master() { this.mastervariabel = [1, 8, 10]; }; master.prototype.nyfunktion = function() { var nyvariabel = this.mastervariabel; console.log(nyvariabel); }; var test = new master(); test.nyfunktion();

#2:

function master() {}; master.mastervariabel = [1, 8, 10]; master.prototype.nyfunktion = function() { var nyvariabel = master.mastervariabel; console.log(nyvariabel); }; var test = new master(); test.nyfunktion();

I exempel #1 så sätts mastervariabel till [1, 8, 10] på alla nya instanser utav 'klassen' master och man kommer åt den via this.mastervariabel i funktioner som finns inuti master.prototype. Går även bra att sätta den till något helt annat värde via this.mastervariabel.
I Exempel #2 så sätter jag en statisk variabel (mastervariabel) till värdet [1,8,10] och man kommer åt variabeln via master.mastervariabel och den är samma vilken instans du än har. Ändrar du värde på den så kommer det ändras för alla instanser utav klassen master så att säga.

Jag skulle dock inte rekommendera att du anropar nyfunktion via master.prototype.nyfunktion() utan på en ny instans utav master() som jag gör i exempel #1. Vill du hellre ha statiska funktioner så kan du göra så här:

function master() {}; master.mastervariabel = [1, 8, 10]; master.nyfunktion = function() { var nyvariabel = master.mastervariabel; console.log(nyvariabel); }; master.nyfunktion();

Vet inte om du blev mycket klokare nu heller men kanske!

MVH Freezer

Intel i7 5820k @ 4,5 GHz ][ Kraken X62 ][ Asus X99-A ][ 32 GB Corsair ][ Sapphire RX480 4GB ][ SB X-fi Fatal1ty ][ Samsung 850Pro 512 GB ][ Corsair RM650 ][ Corsair 400Q ][ Asus MG278Q

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Nov 2002

@Freezer:

Yes, jag tror att du har svarat på min fråga, jag behöver bara läsa på och testa mig framåt från det här.

Tack så mycket för informationen!

Hp Workstation Z800, DUAL Xeon X5570, 24GB RAM, Asus GTX660, 2 x 128GB SSD + 150GB Velociraptor
Server: AthlonII X4, 4GB DDR1333, GF 7200GS, 2,5" 500GB 5,4krpm för OS.

Trädvy Permalänk
Medlem
Plats
Småland
Registrerad
Jan 2003

@warzo: Roligt att mina exempel hjälpte. Lycka till!

MVH Freezer

Intel i7 5820k @ 4,5 GHz ][ Kraken X62 ][ Asus X99-A ][ 32 GB Corsair ][ Sapphire RX480 4GB ][ SB X-fi Fatal1ty ][ Samsung 850Pro 512 GB ][ Corsair RM650 ][ Corsair 400Q ][ Asus MG278Q