При создании экземпляра с new
он автоматически возвращает вновь созданный объект из конструктора. Не рекомендуется переопределять его, если вы не уверены в этом. Также обратите внимание, что если вы вернете не объект, как число, он переопределит это и просто вернет вновь созданный объект. Если вы хотите переопределить это, вам придется возвращать сам объект, например return {value: args*Currency.prototype.multiple}
, но вам нужно добавить свою логику, чтобы ссылаться на ваш вновь созданный объект, который будет использоваться позже, например, получить доступ к currency
.
В вашем случае, вы можете просто иметь value
для каждой валюты и установить его в конструктор, который можно позже доступ с myObject.value
Чтобы использовать его как число, когда оно требует использования в качестве числа можно использовать valueOf в качестве @Xufox упоминается
с предыдущим кодом (valueOf) в месте, в любое время объект типа myNumberType используется в контексте, где он должен быть представлен в виде примитивного значения, JavaScript автоматически вызывает функцию, определенную в предыдущем коде.
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
Просьба предоставить больше контекста. Что именно ты пытаешься сделать? –
Ваш код немного странный, вы можете избежать создания объекта, если опустить ключевое слово 'new'. Просто позвоните «Валюта», как обычная функция. – Scarysize
@FelixKling Я пытаюсь создать новый тип данных «Валюта», который имеет свои собственные свойства. Валюта всегда число, но ее нужно умножить на 1000. Я не хочу получать доступ к значению функции, используя obj.value. Вместо этого я хочу получить доступ к его значению просто obj (Подобно примитивным типам данных) – Avinash