Wenn Sie eine Instanz mit new
erstellen, wird automatisch das neu erstellte Objekt aus dem Konstruktor zurückgegeben. Es wird nicht empfohlen, sie außer Kraft zu setzen, wenn Sie sich nicht sicher sind. Beachten Sie auch, dass, wenn Sie ein Nicht-Objekt wie eine Zahl zurückgeben, es das überschreiben und nur das neu erstellte Objekt zurückgeben wird. Wenn Sie dies überschreiben möchten, müssen Sie ein Objekt selbst zurückgeben, z. B. return {value: args*Currency.prototype.multiple}
, aber Sie müssen Ihre Logik hinzufügen, um den Verweis auf Ihr neu erstelltes Objekt für spätere Verwendung beizubehalten, z. B. Zugriff auf currency
.
In Ihrem Fall können Sie nur noch eine value
für jede Währung und legen Sie es in Konstruktor, die Sie mit myObject.value
späteren Zugriff kann es als Zahl zu verwenden, wenn es die Verwendung als Nummer fordert Sie können valueOf @Xufox erwähnt
dem vorhergehenden Code (valueOf) an Ort und Stelle, zu jeder Zeit ein Objekt vom Typ myNumberType in einem Kontext verwendet wird, wo es als Grundwert repräsentiert werden, ruft automatisch die JavaScript-Funktion definiert im vorhergehenden Code.
var num = new Currency(5);
console.log(num+100 + num.currency);//5100INR
var Currency = function(args) {
this.value = args*Currency.prototype.multiple;
}
Currency.prototype.multiple = 1000;
Currency.prototype.Locale='en-IN';
Currency.prototype.currency= 'INR';
Currency.prototype.paise = function(){
return (Currency.prototype.args*Currency.prototype.multiple);
};
Currency.prototype.show = function(){
return (this.valueOf()/Currency.prototype.multiple).toLocaleString(Currency.prototype.Locale, { style: 'currency', currency: Currency.prototype.currency });
};
Currency.prototype.valueOf = function(){
return this.value;
}
var num = new Currency(5);
console.log(num.value + num.currency) //5000
console.log(num+100 + num.currency);
var num2 = new Currency(50);
console.log(num2.value + num2.currency) //5000
Bitte mehr Kontext zu machen. Was genau versuchst du zu tun? –
Ihr Code ist irgendwie seltsam, Sie können das Erstellen eines Objekts vermeiden, wenn Sie das Schlüsselwort 'new' weglassen. Rufen Sie 'Currency' einfach wie eine normale Funktion auf. – Scarysize
@FelixKling Ich versuche einen neuen Datentyp 'Währung' zu erstellen, der seine eigenen Eigenschaften hat. Währung ist immer eine Zahl, aber sie sollte mit 1000 multipliziert werden. Ich möchte nicht auf den Wert der Funktion mit obj.value zugreifen. Stattdessen möchte ich auf seinen Wert durch einfaches obj zugreifen (wie primitive Datentypen) – Avinash