我需要在Javascript中创建一个新的Object,它应返回一个数字值。 我的期望是:
var Currency = function(args) {
return 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 });
};
var num = new Currency(5);
console.log(num) //5000

但我得到的是一个对象
currency{}
如何实现我的预期结果?
答案 0 :(得分:0)
使用new
创建实例时,它会自动从构造函数返回新创建的对象。除非您确定,否则不建议覆盖它。另请注意,如果返回非对象(如数字),它将覆盖该对象并返回新创建的对象。如果要覆盖它,则必须返回一个对象本身,例如return {value: args*Currency.prototype.multiple}
,但是您必须添加逻辑以保持对新创建的对象的引用,以便稍后使用,例如访问currency
。 / p>
在您的情况下,您可以为每种货币设置value
并在构造函数中设置它,稍后您可以使用myObject.value
要在用作数字时使用它作为数字,您可以使用valueOf作为@Xufox提及
使用前面的代码(valueOf),任何时候类型的对象 myNumberType用于将其表示为a的上下文中 原始值,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