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


但这没用。当我输入一个值时在“ Imperial-Barrel”输入字段中,所有其他输入字段显示:NaN。我真的必须为每个函数编写函数吗?这将使代码更加复杂且难以阅读。有没有办法让对象成员自动应用所需的数学运算?

最佳答案

不,你不能那样做。但是怎么了

var impfloz = 0.0284;
var volumes={
    impfloz: impfloz,
    imppint: impfloz*20,
    impbarrel: impfloz*5600,
    impgal: impfloz*160
};


如果您担心使用impfloz变量污染全局名称空间,则可以将整个内容包装在IIFE中。

this仅在函数内具有含义,它指的是针对其调用函数的对象。

关于javascript - 在对象中使用数学运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25691190/

10-11 08:12