Javascript 在对象中使用数学运算
这是JS中的单元转换器。当有人转换体积时,输入体积首先转换为升,然后再转换为其他单位。计算值会自动显示在输入字段中。为此,我创建了一个对象来存储转换值,如下所示:Javascript 在对象中使用数学运算,javascript,javascript-objects,Javascript,Javascript Objects,这是JS中的单元转换器。当有人转换体积时,输入体积首先转换为升,然后再转换为其他单位。计算值会自动显示在输入字段中。为此,我创建了一个对象来存储转换值,如下所示: var volumes={ cbm: 1000, ltr: 1, ml: 0.001, barrel: 158.9873, gal: 3.785411784, pint: 0.473176473, floz: 0.0295735295625, //and so on };
var volumes={
cbm: 1000,
ltr: 1,
ml: 0.001,
barrel: 158.9873,
gal: 3.785411784,
pint: 0.473176473,
floz: 0.0295735295625,
//and so on
};
对于一个系统的单位之间的转换,我尝试了以下方法:
var volumes={
impfloz: 0.0284130642624675,
imppint: this.impfloz*20,
impbarrel: this.impfloz*5600,
impgal: this.impfloz*160
};
但它不起作用。当我输入值时,例如在输入字段“英制桶”中,所有其他输入字段显示:NaN。我真的需要为每一个函数编写函数吗?这将使代码更复杂,更难阅读。有没有办法让对象成员自动应用所需的数学运算?没有,您不能这样做。但是你怎么了
var impfloz = 0.0284;
var volumes={
impfloz: impfloz,
imppint: impfloz*20,
impbarrel: impfloz*5600,
impgal: impfloz*160
};
如果您担心使用impfloz
变量污染全局名称空间,您可以将整个过程封装在一个iLife中
此
仅在函数中有意义,其中它指的是调用函数所针对的对象。请参阅感谢您提供的信息。它可以工作,但我认为它不是很优雅……但是你能解释一下为什么当我在桶字段中输入10000000000时,加仑字段显示3499999999999.992而不是3500000000000吗?我是说,这就是我为什么要这么做的原因。JS会自动删除一些小数吗?如果是,有什么方法可以防止吗?@quaductas JS数字是“双精度浮点数字”,它们的上限约为2^53,如果需要更高的值,则必须使用库。