HighDots Forums  

Verschachtelte FunktionsAufrufe

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Verschachtelte FunktionsAufrufe in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Wilfried Polenz
 
Posts: n/a

Default Verschachtelte FunktionsAufrufe - 03-29-2008 , 09:57 AM






Hallo NG,


eine Webseite benötigt mehrere JS-Bibliotheken,
in der Lib1.js ist folgende Funktion codiert :


function M1()
{
alert(' das ist M1 ');

S= subfunktion1();
//das geht, aber mehr auch nicht


function subfunktion1()
{
alert(' das ist subfunktion1 in M1');
return(S);
}

return;
}


//******************************** Ende lib1.js
************************************************** *******



//in der Lib2.js soll jetzt subfunktion1() gerufen werden :

document.write("<script type='text/javascript' src='./Lib1.js'></script>");
//hiermit soll dafür gesorgt werden, das der Leistungsumfang von Lib1.js
in Lib2.js bekannt ist.



M1().subfunktion1() // wird nichts

subfunktion1() //wird auch nichts


// *********************** ende der Lib2.js
******************************************




// ********************** in der Webseite
*****************************************

//Anweisungen zum Einbinden von Libraries
<script type="text/javascript" src="./Lib1.js"></script>
<script type="text/javascript" src="./Lib2.js"></script>


//wird die subfunktion1() von einer Webseite heraus aufgerufen, wird das
auch nichts
<script>M1().subfunktion1();</script>
<script>subfunktion1();</script>

Die subfunktionen lassen sich nur innerhalb ihrer Trägerfunktion M1()
starten.


//schießlich möchte ich den obigen befehl zum Einbinden weglasssen.
und statt dessen schreiben.

<script>Lib1.M1().subfunktion1();</script>


ciao,


wilfried.pz




Reply With Quote
  #2  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Verschachtelte FunktionsAufrufe - 03-29-2008 , 10:11 AM






Wilfried Polenz wrote:

Quote:
function M1()
{
alert(' das ist M1 ');

S= subfunktion1();
//das geht, aber mehr auch nicht


function subfunktion1()
{
alert(' das ist subfunktion1 in M1');
return(S);
}

return;
}
Die Funktion 'subfunktion1' ist lokal zur Function 'M1'.

Früher (Netscape 4) konnte man allerdings per
M1.subfunktion1()
die lokale Funktion auch ausserhalb von M1 ansprechen. Aber mit heutigen
Browsern ist das nicht möglich, ist in der ECMAScript-Spezifikation auch
nicht vorgesehen.


--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #3  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Verschachtelte FunktionsAufrufe - 03-29-2008 , 10:18 AM



Wilfried Polenz wrote:
Quote:
eine Webseite benötigt mehrere JS-Bibliotheken,
in der Lib1.js ist folgende Funktion codiert :

function M1()
{
alert(' das ist M1 ');

S= subfunktion1();
`S' ist nicht deklariert, es wird daher auf eine Eigenschaft eines Objekts
in der Scope Chain zugegriffen, die Eigenschaft ggf. hinzugefügt. Das
Objekt kann, muss aber nicht, das globale Objekt sein, und ist daher
fehlerträchtig: alle Bezeichner sollten deklariert werden.

Quote:
//das geht, aber mehr auch nicht


function subfunktion1()
{
alert(' das ist subfunktion1 in M1');
return(S);
Das ergibt keinen Sinn. Zu diesem Zeitpunkt hat `S' keinen definierten
Wert, da der Rückgabewert von subfunktion1() erst dann `S' in M1()
zugewiesen wird, wenn der Ausführungskontext von subfunktion1() erfolgreich
verlassen wurde.

Quote:
}

return;
Überflüssig. Jede Funktion, die explizit keinen Wert zurückliefert, liefert
`undefined'. Das ist auch bei einer return-Anweisung ohne Parameter so.

Quote:
}
Etwas mehr Pretty Printing täte Deinem Code gut.

Quote:
[...]
//in der Lib2.js soll jetzt subfunktion1() gerufen werden :

document.write("<script type='text/javascript' src='./Lib1.js'></script>");
//hiermit soll dafür gesorgt werden, das der Leistungsumfang von Lib1.js
in Lib2.js bekannt ist.
Das kann ebenfalls nicht funktionieren. Wenn überhaupt, wird das
script-Element für Lib1.js *nach* dem aktuellen script-Element hinzugefügt,
da ja das aktuelle script-Element (für Lib2.js) bereits geparst wurde.

Wie ich schon schrieb, lassen sich Abhängigkeiten auf diese Weise nicht
auflösen, sondern entweder manuell oder mit einem Script (serverseitig ist
das am zuverlässigsten), welches beide Script-Elemente entsprechend einer
benutzerdefinierten Abhängigkeitsmatrix in der richtigen Reihenfolge einbindet.


PointedEars
--
Anyone who slaps a 'this page is best viewed with Browser X' label on
a Web page appears to be yearning for the bad old days, before the Web,
when you had very little chance of reading a document written on another
computer, another word processor, or another network. -- Tim Berners-Lee


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.