Vielen Dank schonmal für die Mühe!
MeinWidget.instances = [];
MeinWidget.create = function (element) {
var instances = MeinWidget.instances;
// Suche nach bestehender Instanz
for (var i = 0, l = instances.length; i < l; i++) {
var instance = instances[i];
// Angenommen, das Element wird in der Eigenschaft »element« gespeichert
if (instance.element == element) {
Das 'element' befindet sich nur in 'instance' (siehe push), nicht in instance.element.
~~~javascript
> // Gebe bestehende Instanz zurück
> return instance;
'instance' enthält das DOM-Element, nicht aber die dazugehörige Instanz.
> }
> }
> // Erzeuge neue Instanz
> var widget = new MeinWidget(element);
> MeinWidget.instances.push(element);
> return widget;
> };
>
> var widget = createMeinWidget(document.getElementById('foo'));
Der Chrome meckert bei "createMeinWidget", müsste es nicht "MeinWidget.create" heissen?