Javascript 在对象中使用数学运算

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 };

这是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={
  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,如果需要更高的值,则必须使用库。