Javascript-创建一个新对象,模仿原始数据类型

Javascript-创建一个新对象,模仿原始数据类型,javascript,object,constructor,Javascript,Object,Constructor,我需要在Javascript中创建一个新对象,它应该返回一个数值。 我所期望的是: var Currency=函数(args){ 返回参数*Currency.prototype.multiple; } Currency.prototype.multiple=1000; Currency.prototype.Locale='en-IN'; Currency.prototype.Currency='INR'; Currency.prototype.paise=函数(){ 返回值(Currency.

我需要在Javascript中创建一个新对象,它应该返回一个数值。 我所期望的是:

var Currency=函数(args){
返回参数*Currency.prototype.multiple;
}
Currency.prototype.multiple=1000;
Currency.prototype.Locale='en-IN';
Currency.prototype.Currency='INR';
Currency.prototype.paise=函数(){
返回值(Currency.prototype.args*Currency.prototype.multiple);
};
Currency.prototype.show=函数(){
return(this.valueOf()/Currency.prototype.multiple).toLocalString(Currency.prototype.Locale,{style:'Currency',Currency:Currency.prototype.Currency});
};
var num=新货币(5);

console.log(num)//5000
使用
new
创建实例时,它会自动从构造函数返回新创建的对象。除非您确定,否则不建议覆盖它。还请注意,如果返回一个非对象(如数字),它将覆盖该对象,并仅返回新创建的对象。如果您想覆盖它,您必须返回一个对象本身,比如
返回{value:args*Currency.prototype.multiple}
,但是您必须添加逻辑以保留对新创建对象的引用,以便以后使用,比如访问
Currency

在您的情况下,您只需为每种货币设置一个
,并在构造函数中进行设置,以后可以使用
myObject.value

若要在需要用作数字时将其用作数字,您可以使用@Xufox

使用前面的代码(valueOf),任何时候 myNumberType用于将其表示为 原语值,JavaScript自动调用定义的函数 在前面的代码中

var Currency=函数(args){
this.value=args*Currency.prototype.multiple;
}
Currency.prototype.multiple=1000;
Currency.prototype.Locale='en-IN';
Currency.prototype.Currency='INR';
Currency.prototype.paise=函数(){
返回值(Currency.prototype.args*Currency.prototype.multiple);
};
Currency.prototype.show=函数(){
return(this.valueOf()/Currency.prototype.multiple).toLocalString(Currency.prototype.Locale,{style:'Currency',Currency:Currency.prototype.Currency});
};
Currency.prototype.valueOf=函数(){
返回此.value;
}
var num=新货币(5);
console.log(num.value+num.currency)//5000
console.log(num+100+num.currency);
var num2=新货币(50);

console.log(num2.value+num2.currency)//5000
使用
new
创建实例时,它会自动从构造函数返回新创建的对象。除非您确定,否则不建议覆盖它。还请注意,如果返回一个非对象(如数字),它将覆盖该对象,并仅返回新创建的对象。如果您想覆盖它,您必须返回一个对象本身,比如
返回{value:args*Currency.prototype.multiple}
,但是您必须添加逻辑以保留对新创建对象的引用,以便以后使用,比如访问
Currency

在您的情况下,您只需为每种货币设置一个
,并在构造函数中进行设置,以后可以使用
myObject.value

若要在需要用作数字时将其用作数字,您可以使用@Xufox

使用前面的代码(valueOf),任何时候 myNumberType用于将其表示为 原语值,JavaScript自动调用定义的函数 在前面的代码中

var Currency=函数(args){
this.value=args*Currency.prototype.multiple;
}
Currency.prototype.multiple=1000;
Currency.prototype.Locale='en-IN';
Currency.prototype.Currency='INR';
Currency.prototype.paise=函数(){
返回值(Currency.prototype.args*Currency.prototype.multiple);
};
Currency.prototype.show=函数(){
return(this.valueOf()/Currency.prototype.multiple).toLocalString(Currency.prototype.Locale,{style:'Currency',Currency:Currency.prototype.Currency});
};
Currency.prototype.valueOf=函数(){
返回此.value;
}
var num=新货币(5);
console.log(num.value+num.currency)//5000
console.log(num+100+num.currency);
var num2=新货币(50);

console.log(num2.value+num2.currency)//5000
请提供更多上下文。你到底想做什么?你的代码有点奇怪,如果你省略
new
关键字,你可以避免创建一个对象。只需像调用普通函数一样调用
Currency
。@FelixKling我正在尝试创建一个新的数据类型“Currency”,它有自己的属性。货币总是一个数字,但它应该乘以1000。我不想使用obj.value访问函数的值。相反,我希望通过简单的obj(如原始数据类型)来访问它的值,如果它来自经典编程语言,我建议使用ES2015中引入的较新的
class
语法创建类。但请注意,仅使用此语法创建javascript对象并不能说明该语言如何工作,请提供更多上下文。你到底想做什么?你的代码有点奇怪,如果你省略
new
关键字,你可以避免创建一个对象。只需像调用普通函数一样调用
Currency
。@FelixKling我正在尝试创建一个新的数据类型“Currency”,它有自己的属性。货币总是一个数字,但它应该乘以1000。我不想使用obj.value访问函数的值。相反,我希望通过简单的obj(如原始数据类型)来访问它的值,如果它来自经典编程语言,我建议使用ES2015中引入的较新的
class
语法创建类。但是请注意,仅使用此语法创建javascript对象并不能说明该语言是如何工作的谢谢:)I wan
var num = new Currency(5);
console.log(num+100 + num.currency);//5100INR