Objektname abfragen
Kalle_B
- javascript
Hallöle,
function abc( def )
{
alert( "Objektname=[] Parameter=["+def+"]" );
}
var ghi = new( abc('jkl') )
Ich möchte diese Anzeige:
Objektname=[ghi] Parameter=[jkl]
Wie frage ich den Objektnamen (also ghi) in der function abc ab?
this.name
this.objektname
funktioniert nicht.
Lieben Gruß, Kalle
Yerf!
Wie frage ich den Objektnamen (also ghi) in der function abc ab?
Das geht nicht. Auf ein und das selbe Objekt können beliebig viele Referenzen existieren, welche davon möchtest du wissen?
Gruß,
Harlequin
»» Wie frage ich den Objektnamen (also ghi) in der function abc ab?
Das geht nicht.
Oh, shit ... In dem Objekt setze ich Links, die sich auf das Objekt beziehen.
Auf ein und das selbe Objekt können beliebig viele Referenzen existieren, welche davon möchtest du wissen?
Na, die mit new(). Das kann doch wohl nur eine sein, oder?
Kalle
» »» Wie frage ich den Objektnamen (also ghi) in der function abc ab?
»
» Das geht nicht.Oh, shit ... In dem Objekt setze ich Links, die sich auf das Objekt beziehen.
Das ist kein Problem, dazu ist der Variabelnname nicht nötig.
Struppi.
»» Oh, shit ... In dem Objekt setze ich Links, die sich auf das Objekt beziehen.
Das ist kein Problem, dazu ist der Variabelnname nicht nötig.
Nicht nötig?
Normalerweise würde ich eine Funktion des Objekts ghi so aufrufen: ghi.init();
Und dieser Aufruf wird vom Objekt ins HTML (innerHTML) geschrieben.
Und du meinst, ich kann ghi. weglassen? Nicht verstanden.
Ich denke, ich mache es einfach so:
var ghi = new( abc('jkl','ghi') );
Dann habe ichs. Dachte nur, dass das redundant ist.
Kalle
» »» Oh, shit ... In dem Objekt setze ich Links, die sich auf das Objekt beziehen.
»
» Das ist kein Problem, dazu ist der Variabelnname nicht nötig.Nicht nötig?
Ja. Nicht nötig.
Normalerweise würde ich eine Funktion des Objekts ghi so aufrufen: ghi.init();
Und dieser Aufruf wird vom Objekt ins HTML (innerHTML) geschrieben.Und du meinst, ich kann ghi. weglassen? Nicht verstanden.
Nein, das meine ich nicht, aber wenn du den Namen der Variabel weist, dann ist das ja kein Problem.
Aber ich vermute du machst etwas anderes als du uns zeigst.
Ich denke, ich mache es einfach so:
var ghi = new( abc('jkl','ghi') );
Das ist nicht einfach und es ist 100% überflüssig.
Dann habe ichs. Dachte nur, dass das redundant ist.
Ist es.
Struppi.
Hi,
Normalerweise würde ich eine Funktion des Objekts ghi so aufrufen: ghi.init();
oder foo.init(), wenn Du eine entsprechende Referenz namens foo hast.
Und dieser Aufruf wird vom Objekt ins HTML (innerHTML) geschrieben.
Irrelevant.
Und du meinst, ich kann ghi. weglassen? Nicht verstanden.
Nein, Du benötigst lediglich eine Referenz. Wie diese heißt, ist vom Kontext abhängig.
Dann habe ichs. Dachte nur, dass das redundant ist.
Ist es auch. Warum sollte ein Objekt wissen müssen, welchen Namen eine eventuell vorhandene Variable hat, in der es gespeichert wird?
Cheatah
Ich denke, ich mache es einfach so:
var ghi = new( abc('jkl','ghi') );Dann habe ichs. Dachte nur, dass das redundant ist.
Schade, dass du nicht mehr reagierst, weil das ist Mist und steht jetzt hier quasi als "Lösung"
Der Wunsch nach dem Namen der Variabel taucht i.d.R. auf, wenn man in einem anderen Kontext ein Objekt aufrufen will. Der andere Kontext kann ein Eventhandler oder ein Timer sein. In beiden Fällen brauchst du nicht den Namen der Variabel. Leider Wissen wir nicht, was du wirklich machst und man kann daher nicht sagen was du eigentlich brauchst. Aber ich zeig das mal kurz Anhand eines Timers.
var id = 1;
function Obj(time) {
var _this = this; // Kopie
this.hallo = function() {
alert(_this.name);
};
this.name = 'Objekt:' + ID++;
window.setTimeout( _this.hallo, time);
}
var a = new Obj(3500);
var b = new Obj(1500);
Wie du siehst, nirgendwo wird der Name der Variabel benötigt.
Struppi.
Schade, dass du nicht mehr reagierst
Naja, ich kann nicht stündlich an Diskussionen teilnehmen, irgendwo gibt es da noch einen winzigen Nebenjob ...
Leider Wissen wir nicht, was du wirklich machst und man kann daher nicht sagen was du eigentlich brauchst.
Es geht um das Einbinden einer fremden Seite per Iframe. Die Lösung, wie es mit genau _einem_ Iframe geht, steht hier.
Mit _zwei_ oder mehr Iframes funzt das so nicht, deshalb wollte ich eine objektorientierte Lösung.
Wenn das Objekt initialisiert wird, baut es den etwas komplizierten Sourcenamen zusammen und schreibt ihn an die Stelle im HTML- Code, wo das fremde Dokument erscheinen soll.
Lieben Gruß, Kalle
Mit _zwei_ oder mehr Iframes funzt das so nicht, deshalb wollte ich eine objektorientierte Lösung.
Du meinst so: http://selfhtml.jstruebig.de/iframe.html
wie gesagt, geht alles ohne das du den Variabelnnamen brauchst.
Struppi.
Hi,
Auf ein und das selbe Objekt können beliebig viele Referenzen existieren, welche davon möchtest du wissen?
Na, die mit new(). Das kann doch wohl nur eine sein, oder?
var ichReferenziereEineObjektInstanz = new IrgendeinObjekt();
var meToo = ichReferenziereEinObjekt;
ichReferenziereEineObjektInstanz und meToo referenzieren jetzt beide auf die gleiche Instanz des Objektes IrgendeinObjekt.
new IrgendeinObjekt();
Und auf diese Instanz referenziert jetzt gar keine JavaScript-Variable.
MfG ChrisB
Wie frage ich den Objektnamen (also ghi) in der function abc ab?
Gar nicht, das geht nicht. Wozu brauchst du sowas?
Struppi.
function abc( def )
{
alert( "Objektname=[] Parameter=["+def+"]" );
}
var ghi = new( abc('jkl') )
> Wie frage ich den Objektnamen (also ghi) in der function abc ab?
Gar nicht. Die Konstruktorfunktion weiß nichts davon, was nach ihrer Ausführung mit der zurückgegebenen Instanz passiert - also weiß sie auch nichts davon, dass die Instanz in einer Variable mit einem Namen gespeichert wird.
Wenn das Objekt einen Namen haben soll, von dem es selber weiß, musst du dem Konstruktor diesen übergeben. Wenn du irgendwo ein Register mit allen Objekten nach Namen brauchst, musst du es selbst anlegen.
Mathias
--
[JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)
function abc( def )
{
alert( "Objektname=[] Parameter=["+def+"]" );
}
var ghi = new( abc('jkl') )
Das funktioniert so nicht, da abc('jkl') kein Objekt zurückgibt, das als Konstruktor geeignet ist. Die Meldung (durch alert) kommt trotzdem, weil der Fehler erst danach zum Tragen kommt.
> Ich möchte diese Anzeige:
> Objektname=[ghi] Parameter=[jkl]
Dann musst du dem Objekt den Namen 'ghi' irgendwie geben, also z.B. so:
~~~javascript
function Foo(name, parameter){
this.name=name;
this.parameter=parameter;}
var ghi=new Foo('ghi','jkl');
Wie frage ich den Objektnamen (also ghi) in der function abc ab?
this.name
this.objektname
funktioniert nicht.
Richtig, woher auch?
var x=y=z=new Foo();
Wie heißt nun das Objekt?