Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Unterklassen in Objekt literal schreibweise





Frage

Kann ich folgenden 1.Code in Objekt-literal schreibweise schreiben? Es soll ein Menü in einem Object abgebildet werden. 1. Code zeigt das funktionierende Objekt, 2. Code meinen Ansatz, das ganze als Objekt literal umzusetzen. Dort kann ich die Unterklasse "c_menuItem()" nicht innerhalb des Objektes notieren, bzw. nicht über [i]new[/i] zuweisen. Ich nehme auch gerne Kritiken an meiner Wortwahl ("Klassen", "Objekt-literale",...) oder an meiner Programmstruktur im allgemeinen entgegen. [b][u]1.Code[/u][/b] [code]function c_menu() { this.cnt = 0; this.itm = new Array(); this.add = function (level,url,desc) { menu.itm[menu.cnt] = new c_menuItem(); menu.itm[menu.cnt].set(level,url,desc); menu.cnt++; } function c_menuItem() { this.level = 0; this.url = "none"; this.desc = "none"; this.set = function (level,url,desc) { this.level = level; this.url = url; this.desc = desc; } } } var menu = new c_menu();[/code] [b][u]2.Code[/u][/b] [code]menu = { cnt: 0, itm: new Array(), add: function (level,url,desc) { menu.itm[menu.cnt] = new c_menuItem(); menu.itm[menu.cnt].set(level,url,desc); menu.cnt++; } /* function c_menuItem() { this.level = 0; this.url = ""; this.desc = ""; this.set = function (level,url,desc) { c_menuItem.level = level; c_menuItem.url = url; c_menuItem.desc = desc; } } */ }[/code]

Antwort 1 von kicia

so scheint es zu funktionieren:
menu =
{
	cnt: 0,
	itm: new Array(),
	add: function (level,url,desc)
	{
		menu.itm[menu.cnt] = new this.c_menuItem();
		menu.itm[menu.cnt].set(level,url,desc);
		menu.cnt++;
	},

	c_menuItem: function ()
	{
		this.level = 0;
		this.url   = "";
		this.desc  = "";
		this.set   = function (level,url,desc)
		{
			this.level = level;
			this.url   = url;
			this.desc  = desc;
		}
	}
}