在对象中使用数学运算

时间:2014-09-05 17:37:32

标签: 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={
  impfloz: 0.0284130642624675,
  imppint: this.impfloz*20,
  impbarrel: this.impfloz*5600,
  impgal: this.impfloz*160
};

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

1 个答案:

答案 0 :(得分:1)

不,你不能这样做。但是

有什么问题
var impfloz = 0.0284;
var volumes={
    impfloz: impfloz,
    imppint: impfloz*20,
    impbarrel: impfloz*5600,
    impgal: impfloz*160
};

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

this仅在函数中有意义,它指的是调用函数的对象。