peterS.: Array.indexOf vs. Array.prototype.indexOf - korinthenkackerei

Beitrag lesen

gruss Struppi,

ich muss mal den korinthenkacker spielen,
natuerlich nur fuer das archiv, und weil es
eben doch auf ein paar feinheiten ankommt:

... Du musst dir dazu selber eine Erweiterung schreiben,
was aber in dem Fall relativ einfach ist

if(!Array.indexOf)

hier begehst Du zwei unvorsichtigkeiten auf einmal, indem
Du pruefst, ob ein *objekt* [indexOf] fuer das objekt [[Array]]
implementiert ist.
eigentlich willst Du wissen, ob eine gleichnamige *methode*
fuer das *[prototype]*-objekt von [[Array]] existiert.

die abfrage auf das generische (statisch im klassenkontext)
Array.indexOf kollidiert bis jetzt zwar nirgendwo mit der
gleichlautenden prototypenmethode, da im moment nur
geckos sowohl die generischen [[Array]]-methoden als
auch die gleichnamigen prototypischen erweiterungen im
zuge von JavaScript 1.6 eingepflanzt bekommen haben -
dennoch gibt es den von mir nicht ganz an den haaren
herbeigezogenen fall, dass eine auf Deine art geschriebene
bibliothek im zusammenspiel mit den scripten anderer bei
einem weniger versierten dritten nicht genau das ergebnis
liefert, welches sich der letztgenannte vorgestellt haben
mochte ...

... und deswegen dann doch lieber so:

if (typeof Array.prototype.indexOf != "function") {  
  
  Array.prototype.indexOf = function (obj) {/*  
  
    code;*/  
  };  
}

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:]