peterS.: "Type Detection" als Grundlage eines devensiven Programmierstils

Beitrag lesen

hallo Rouven, gruss Kermit,

wie kann ich im JS testen ob ei element überhaupt eine property hat?

rührt dein Drang daher, eine Browserfehlermeldung NICHT zu bekommen?
"has no properties" ist des Browsers Art dir zu sagen, dass das Objekt
für ihn nicht existiert. Der entsprechende Vergleich dazu lautet

if (elem == null) {
   // do something
}

ein vergleichender test auf die werte der primitiven typen [undefined] und
[null] sollte niemals mit dem vergleichsoperator [==] durchgefuehrt werden:

alert(null == null) // [true] - wie zu erwarten  
alert(window.undefined == null); // auch [true]  
  
alert(0 == false); // ebenfalls [true];

wenn schon unschoen, dann bitte mit dem identitaetsoperator [===]:

alert(null === null) // immer noch [true]  
alert(window.undefined === null); // richtigerweise [false]  
  
alert(0 === false); // ebenfalls richtigerweise [false];

besser waere es, einigermassen venuenftige "type detection" zu betreiben:

this.isUndefined = (function (obj) {  
  
  return (typeof obj == "undefined");  
});  
  
this.isNull = (function (obj) {  
  
//return ((typeof obj == "object") && (obj === null));  
  return ((typeof obj == "object") && (!obj));  
});

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