Array-Steuerung
Alexander Kiel
- javascript
Hi Forum,
Ich möschte ein Array in JS während der Laufzeit in der Größe ändern. D.h. ich muß Elemente anhängen und wieder löschen. In Netscape ab 4.0 geht dies mit pop() und push() wunderbar.
Meine Frage:
Wie mache ich es im IE?
Danke im Vorraus
ALEX
Hi Forum,
Ich möschte ein Array in JS während der Laufzeit in der Größe ändern. D.h. ich muß Elemente anhängen und wieder löschen. In Netscape ab 4.0 geht dies mit pop() und push() wunderbar.
Meine Frage:
Wie mache ich es im IE?Danke im Vorraus
ALEX
Array.prototype.numberOf = entriesOf
Array.prototype.remove = kill
Array.prototype.removeNr = killn
Array.prototype.indiOf = posi
function not(bol) {
bol = (bol) ? false : true
return bol
}
function entriesOf(what) {
var count = 0;
for (me = 0 ; me < this.length ; me ++ ) {
if (this[me] == what ) {count++};
}
return count;
}
function posi(named) {
var count = -1;
var me =0
while (me < this.length && count == -1 ) {
if (this[me] == named ) {count = me};
me ++
}
return count;
}
function kill(named) {
var i = 0
var z = new Array()
while ( i< this.length ) {
if (this[i] != named) {
z = z.concat(this[i]) }
i++
}
return z
}
function killn(named) {
var i = 0
var z = new Array()
while ( i< this.length ) {
if (i != named) {
z = z.concat(this[i]) }
i++
}
return z
}
Die dinger hatte ich mir mal für ein ähnliches problem geschrieben (no pop() ) bzw wohl genau das selbige.
jede deiner Arrays die du nach dem prototype erstellst kann dan etwas mehr.
z.B.:
x = new Array(20)
x[5] = "hallo"
x.indiOf("hallo") liefert 5
x = x.remove("Hallo") entfernt Hallo, die reien folge wird nicht geändert un die neue array ist um eins kürzer
x = x.removeNr(5) selbiges nur über den Indice.
So und morgen schreiben wir die Funktionen so um das wir mehrere Parameter übergeben können :)
Timo
Array.prototype.numberOf = entriesOf
Array.prototype.remove = kill
Array.prototype.removeNr = killn
Array.prototype.indiOf = posi
Moment da is ja noch mehr...
x.numberOf wuerde die anzahl der Hallo's zurück liefern.
und remove entfernt alle Hallos.
Timo
Hi Timo
Über die Prototype-Eigenschaft habe ich in der Core-Doc schon etwas gelesen, jedoch nicht richtig verstanden.
Darum 2 Verständnisfragen:
Kann man mit klasse.prototype.methode eine bestehende Methode einer bestehenden Klasse mit einer eigenen Methode überdecken ?
Ist über diesen Weg (oder einen anderen) auch ein Vererbung von Methoden und Eigenschaften auf selbstdefinierte Child-Klassen möglich ?
Danke für die Auskünfte.
Grüsse
Tom
oha...
jetzt hast du mich aber auf nem kalten fuss erwischt das müsste ich selber nach schauen. aber da geht erstaunlich viel. der macker schlecht hin ist dan godmann von devEdge Netscape. Ich habe den Artikel aber auch auf meiner hompage.
http://www.ki.tng.de/~timob/jsobj/index2.htm
ansonsten kann ich dir nur die devEdge seiten von Netscape empfehlen. da steht sehr viel zum dem thema. bei selfaktuell steht auch noch ein sehr guter link zum thema prototypes (bei den links).
achja das lustigste ist das funzt alles auch mit dem ie :)
mfg Timo
http://www.ki.tng.de/~timob/jsobj/index2.htm
Nach grobem Überfliegen scheint fast alles möglich zu sein. Neue Klassen, Vererbungen, Methoden überdecken, ...).
Danke für den Tip :-)
Grüsse
Tom
Array.prototype.numberOf = entriesOf
Array.prototype.remove = kill
Array.prototype.removeNr = killn
Array.prototype.indiOf = posi
Bist Du sicher, dass der MSIE 4 mit Vererbung umgehen kann. Ich habs nicht asuprobiert, will es aber mal bezweifeln? Weisst Du es genau? Ansonsten ginge es ja auch per Hand, ohne das Objekt zu erweitern.
Viele Gruesse, Thomas Hieck
Bist Du sicher, dass der MSIE 4 mit Vererbung umgehen kann. Ich habs nicht asuprobiert, will es aber mal bezweifeln? Weisst Du es genau? Ansonsten ginge es ja auch per Hand, ohne das Objekt zu erweitern.
Viele Gruesse, Thomas Hieck
Ja. Ich arbeite hauptsächlich mit dem IE. Es funzt wunderbar. Der ganze abgefahrene kram läuft prima. Mit IE und NS. In allen versionen. Sonst hätte ich das Script wohl kaum auf diese Frage hin geposted.
Die geschichte mit "per Hand" hat vorallendingen bei grossen arrays einen nachteil: Das this/prototype bezieht sich auf das object mit dem man arbeitet. wenn ich jedoch z.b. eine array als parameter an eine funktion weitergebe wird sie kopiert. das atens dauert und btens braucht mehr speicher. allerdings könnte man das umgehen in dem man mit globalen variablen arbeitet, was jedoch nicht immer praktisch ist wenn man mehrere arrays hat.
Timo