gruss Eddie,
geht es, zwei Objekte O1 und O2 mit Eigenschaften x,y,z zu vergleichen, ...
Es handelt sich dabei aber nicht um dieselben Objekte, was ich glaubich mit
if (O1 == O2)... prüfen kann.
wie von Rouven vorgeschlagen, muss man sich ein eigenes [Object].equals
stricken.
dies ist aber alles andere als trivial.
wer es schafft, fuer JavaScript ein wasserdichtes [Object].clone
und ein
verlaessliches [Object].equals
zu schreiben, muss diese sprache fast schon
verinnerlicht haben.
nach vielen versuchen und umfangreichen tests bin ich der meinung, dass
eine resourcenschonende (sowohl im quellcode-umfang als auch im laufzeit-
verhalten) umsetzung nur im rahmen einer selbstauferlegten hinreichenden
genauigkeit zu erreichen ist.
der von mir zuletzt verfolgte ansatz arbeitet nicht mehr mit den anfangs
favorisierten direkten rekursiven vergleichen zwischen den eigenschaften
der zu analysierenden objekte - vielmehr werden jetzt die jeweiligen
"dump-signaturen" beider objekte miteinander verglichen.
entsprechend einfach gestaltet sich auch die implementierung der schon
mehrfach angesprochenen methode [Object].equals
:
~~~javascript
Object.prototype.equals = function (obj) {
return ((this === obj) || (this.dump() == obj.dump()));
};
die aufgabe verschiebt sich nun dahingehend, ein vernuenftiges "dump"
fuer die verschiedenen objekte das JavaScript-sprachkerns implementieren
zu muessen. dazu moechte ich Dich einfach auf den letzten arbeitsstand
meiner diesbezueglichen dauerbaustelle verweisen - dort gibt es genug
quaelcode zum gucken:
<http://www.pseliger.de/jsExtendedApi/jsApi.Object.clone.new.dev.html>
<http://www.pseliger.de/jsExtendedApi/jsApi.Object.clone.new.dev.js>
`[Object].equals`{:.language-javascript} kommt auch wirklich mit jedem kram zurecht, weigert sich
aber konsequent, ein objekt und dessen direkten klon fuer identisch zu
erklaeren ... `(obj.dump() == obj.clone().dump())`{:.language-javascript} ... ist immer falsch.
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](http://javascript.crockford.com/)
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]