jan: Instanzierung von (prototype) Klassen - wann und wo

Hallo zusammen,

ich habe eine eher grundlegende / anfänger frage die mir bei der einarbeitung in ajax / prototype framework kommt..

und zwar schreibe ich meine funktionen/klassen wie folgt:

divScroller = Class.create(
{

initialize: function()
 {
  Event.observe($('ScrollLeft'), 'click', this.moveLeft.bind(this), false);
  Event.observe($('ScrollRight'), 'click', this.moveRight.bind(this), false);
 },

moveLeft: function()
 {
  alert('links');
 },

moveRight: function()
 {
  alert('rechts');

}

});

nur wie instanziere ich dieses nun und an welcher stelle im dokument ??
am ende vom body, am ende der Javascript-Datei ?

wäre

var divScroller = new divScroller();

für die instanzierung am besten oder geht es anders ?

oder wie ist es am elegantesten bzw. korrekt, auch in bezug auf browserkompatibilität?

viele grüße

jan

  1. Hi,

    nur wie instanziere ich dieses nun und an welcher stelle im dokument ??
    am ende vom body, am ende der Javascript-Datei ?

    Generell am Ende vom body, da du sicher gehen musst dass die Elemente $('ScrollLeft') und $('ScrollRight') schon existieren.

    Allerdings weiß ich nicht, wie das Class.create() tickt. Evtl. wird initiliaze auch erst aufgerufen, wenn das Dokument geladen ist (anzunehmen). dann wäre es egal.

    wäre

    var divScroller = new divScroller();

    für die instanzierung am besten oder geht es anders ?

    Du solltest nicht den selben Namen für die Instanz verwenden, wie für die Klasse, sonst kannst du ja nur eine Instanz erzeugen.

    Klassennamen schreibt man eigentlich immer groß am Anfang.

    Gruß!

    1. hi,

      danke für die antwort..

      eine instanz reicht auch - zumindest in dem fall

      also sollte ich überprüfen ob das dokument geladen ist, und dann erst instanzieren ?

      das heisst ich müsste am beispiel der divScroller.js, die im Head eingebunden wird, die instanzierung (var xy = new divScroller();)

      ans ende schreiben ?

      gruß

      Hi,

      nur wie instanziere ich dieses nun und an welcher stelle im dokument ??
      am ende vom body, am ende der Javascript-Datei ?

      Generell am Ende vom body, da du sicher gehen musst dass die Elemente $('ScrollLeft') und $('ScrollRight') schon existieren.

      Allerdings weiß ich nicht, wie das Class.create() tickt. Evtl. wird initiliaze auch erst aufgerufen, wenn das Dokument geladen ist (anzunehmen). dann wäre es egal.

      wäre

      var divScroller = new divScroller();

      für die instanzierung am besten oder geht es anders ?

      Du solltest nicht den selben Namen für die Instanz verwenden, wie für die Klasse, sonst kannst du ja nur eine Instanz erzeugen.

      Klassennamen schreibt man eigentlich immer groß am Anfang.

      Gruß!

  2. Hallo,

    Event.observe($('ScrollLeft'), 'click', this.moveLeft.bind(this), false);

    Das schreibt man neuerdings
    $('ScrollLeft').observe("click", this.moveLeft.bind(this))

    nur wie instanziere ich dieses nun und an welcher stelle im dokument ??

    Wenn dom:loaded eintritt:
    http://www.prototypejs.org/api/document/observe

    Mathias

    1. vielen Dank.

      Und Instanzieren bleibt ganz normal bei var XYZ = new divScroller();

      oder gibt es da auch besonderheiten / unterschiede worauf ich achten muss ?

      gruß

      Hallo,

      Event.observe($('ScrollLeft'), 'click', this.moveLeft.bind(this), false);

      Das schreibt man neuerdings
      $('ScrollLeft').observe("click", this.moveLeft.bind(this))

      nur wie instanziere ich dieses nun und an welcher stelle im dokument ??

      Wenn dom:loaded eintritt:
      http://www.prototypejs.org/api/document/observe

      Mathias