peterS.: Zuweisung zerstört Number-Objekt

Beitrag lesen

gruss Don P, hallo und danke molily,

Für einen estimmten Zweck würde ich gerne mit Number-Objekten
arbeiten, die um spezielle Eigenschaften erweitert sind, aber
leider geht das so nicht : -(.

Ja. All diese Operatoren arbeiten mit Primitives und wandeln die
Operanden ggf. um. Operator-Überladung gibt es in JavaScript nicht,
also müsstest du dir einen eigenen Typ »Value« mit eigenen Methoden
wie plus, minus usw. schreiben. Die operieren dann z.B. mit einem
Number-Primitive als private Eigenschaft. valueOf und toString
kannst du überschreiben, sodass sich das Objekt nach außen wie
ein Number-Primitive verhält.

genau, dass koennte dann z.b. so aussehen:

var DonPNumber = (function (num) {  
  
  
  num = Number(num);  
  
  
  this.valueOf = (function () {  
  
    return num;  
  });  
  this.toString = (function () {  
  
    return String(num);  
  });  
  
  
  this.sum = (function (val) {  
  
    num += Number(val);  
  });  
});  
  
  
var num = new DonPNumber(30);  
num.unit = "apples";  
  
num.sum(20);  
  
alert(num);        // 50     - true  
alert(num.unit);   // apples - true  
alert(num + 300);  // 350    - true  
alert(num + "00"); // 5000   - true

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