KurtZ: Overloading von ==

Beitrag lesen

HI

In deinem Fall müßte es so aussehen:

Array.prototype.equals = function(p) {

if(this.length != p.length) return false;
for(var i = 0; i < this.length; i ++) if( this[i] != p[i]) return false;
return true;
}
alert( [1].equals([1]));

  
Überlädt equals jetzt den == operator, oder definierst du hier ne neue Methode equals? Konnte dazu jetzt nichts googlen.  
  
Davon ist nämlich abhängig ob Unterarrays dann mit this[i] != p[i] auch rekursiv untersucht werden, ansonsten müsste es sowas wie  
! this[i].equals(p[i])  
heißen.  
  
Anders: Ohne overloading würde deine methode in Perl nur ein @this=@p realisieren.  
  
Außerdem würde ich als erstes noch den Fall abfangen, das beide verglichenen Arrays identische Objekte sind und dafür sofort true zurückliefern. Spart rekursionen.  
  
Desweiteren müsste noch diskutiert werden inwieweit sich Ringstrukturen auswirken, da müsste eine Rekursion rechtzeitig abgebrochen werden sonst gibts ne böse Endlosschleife,z.B.  
[code lang=javascript]  
a=b=Array();  
a=[b,...];  
b=[a,...];  
[code lang=javascript]  
  
Bye  
 KurtZ