• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

selbst ausführende Funktion innerhalb eines Objektes

J

j-l-n

Guest
Ich habe ein Objektliteral mit verschiedenen Funktionen. Nun möchte ich eine davon ausführen, die wiederum auf eine andere zugreift:
Code:
var someObj = {
  doSomething: function(){
    alert("something");
  },
  doSomethingOther: function(){
    alert("something other");
  },
  init: (function(){
    window.onload = someObj.doSomething;
  }())
}
[HIGHLIGHT]Zum Zeitpunkt der Ausführung ist someObj jedoch hier noch undefined.[/HIGHLIGHT]

Folgender Code dagegen funktioniert:
Code:
var someObj = {
  doSomething: function(){
    alert("something");
  },
  doSomethingOther: function(){
    alert("something other");
  }
}

someObj.init = (function(){
  window.onload = someObj.doSomething;
}());

Gibt es einen Weg, wie ich den gleichen Effekt erziele, jedoch - wie im ersten Beispiel - alle Funktionen direkt in das Objektliteral schreiben kann?
 
Gibt es einen Weg, wie ich den gleichen Effekt erziele, jedoch - wie im ersten Beispiel - alle Funktionen direkt in das Objektliteral schreiben kann?

Ich würde es so machen, wenn es eine init-Funktion geben soll:
Code:
var someObj = {
  doSomething: function(){
    alert("something");
  },
  doSomethingOther: function(){
    alert("something other");
  },
  init: function(){
    this.doSomething();
  }
};

window.onload = someObj.init();

// bzw.:
$(function(){
  someObj.init();
});


Was anderes fällt mir spontan jetzt nicht ein.
 
Code:
window.onload = someObj.init();

Wobei das so keinen Sinn ergibt, da init() sofort aufgerufen wird und nicht erst im onload:
Code:
window.onload = function(){
	someObj.init();
};

@j-l-n: dein erste Konstrukt mit dem init ist auch nicht wirklich sinnvoll, da dem someObj.init undefined zugewiesen wird.
Aber zu deiner Frage: nein, du kannst während der Erzeugung der Objektes nicht schon auf das Objekt zu greifen. Aber warum willst du das überhaupt machen?
 
zu deiner Frage: nein, du kannst während der Erzeugung der Objektes nicht schon auf das Objekt zu greifen.
Danke, genau das wollte ich wissen. Macht nichts, war sowieso bloß zur „Verschönerung” des Codes gedacht, wenn man das alles in ein Objekt bringt - aber egal.
 
Zurück
Oben