molily: Bitte um Syntaxerläuterung für ein Skript (Array oder Funktion?)

Beitrag lesen

Hallo,

var Behaviour = {

list : new Array,

register : function(sheet){
Behaviour.list.push(sheet);
},

...

}

Die Variable Behaviour, ist es nun ein Array oder eine Klasse??

Weder noch. Es ist ein Object-Objekt. Object ist der Konstruktor für alle möglichen Objekte, man damit auch ein "abstraktes" Objekt erschaffen. Dies hat hier nur den Zweck, ein paar andere Eigenschaften und Funktionen als Eigenschaften zu beinhalten.
Es ist keine "Klasse" (bzw. kein Prototyp, weil es in JavaScript keine Klassen gibt).

{ eigenschaft1 : wert1, eigenschaft2 : wert 2, ... } ist ein Object-Literal und erzeugt ein allgemeines Objekt.

Diese Literal-Kurzschreibweise ist äquivalent zu:

var Behaviour = new Object();
Behaviour.list = new Array();
Behaviour.register = function (...) { ... };

Damit hat man also ein abstraktes Objekt, das nur als Container für andere Objekte dient. In diesem Fall hat es zwei Eigenschaften, einen Array und eine Funktion.

Das Vorteil dieser Organisation ist, dass man alle zusammengehörigen Eigenschaften bzw. Funktionen an einem Objekt kleben hat, anstatt dass sie einfach im globalen Geltungsbereich gespeichert werden.

Man hätte auch schreiben können:

var list = new Array();
function register (sheet){
   list.push(sheet);
}

usw.

Vielleicht kann mir ja auch jemand ein dt. Seite schreiben, wo solche Dinge näher erläutert sind.

Ich habe meine Bookmarks gerade nicht hier. http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Literals#Object_Literals ist auf Englisch.
http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/jscript7/html/jsconObjectData.asp zielt zwar auf JScript(.NET), aber das gilt auch für JavaScript.
Zum Object-Konstruktor: http://www.html-world.de/program/js_o_obj.php

Mathias