这是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。我真的必须为这些功能编写功能吗?这会使代码更复杂,更难以阅读。有没有办法让对象成员自动应用所需的数学运算?
答案 0 :(得分:1)
不,你不能这样做。但是
有什么问题var impfloz = 0.0284;
var volumes={
impfloz: impfloz,
imppint: impfloz*20,
impbarrel: impfloz*5600,
impgal: impfloz*160
};
如果您担心使用impfloz
变量污染全局命名空间,可以将整个事物包装在IIFE中。
this
仅在函数中有意义,它指的是调用函数的对象。