peterS.: *Listen* vs native [Array]s ... und die methode [Array.make]

Beitrag lesen

hallo again mAciD,

var A_TextPCountry = document.getElementsByName("PB_TextPCountry");

Dieses globale Array lege ich zu Programmbeginn an.

hier steckt auch schon der fehler - [A_TextPCountry] ist kein array-
objekt, sondern ein sogenanntes [NodeList]-objekt bzw. in der fehlerhaften
implementierung von mozilla ein [HTMLCollection]-objekt.

diese listen lassen sich zwar wie arrays mit >>for (var i=0 ...)<<
iterieren, implementieren selber aber keinerelei array-methoden.

eine methode/funktion, die aus listen-strukturen native array-objekte
erzeugt, muss im kern anders geschrieben werden, als die beiden in den
vorherigen postings vorgestellten methoden/funktionen.

im modernen kern etwa so:

Array.make = (function (list) {  
  
  return Array.prototype.slice.call(list);  
});

dieser ansatz scheitert aber schon im msie, da die delegation an
das prototypische [slice] mit fehler abbricht. das gleiche gilt
fuer strings, die ja ebenfalls als listen implementiert sein
koennten (dort versagt auch opera). browseruebergreifend ist nur
die delegation von[arguments]-arrays und nativen array-objekten
verlaesslich.

werbung in eigener sache:

ein wasserdichtes und performantes [Array.make]
laesst sich auf refactory.org finden.

so long - peterS. - pseliger@gmx.net

--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]