这是一个用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。我真的需要为每一个都写函数吗?这会使代码变得更加复杂和难以阅读。有没有办法让对象成员自动应用所需的数学运算?
发布于 2014-09-06 01:41:54
不,你不能这么做。但是有什么问题呢?
var impfloz = 0.0284;
var volumes={
impfloz: impfloz,
imppint: impfloz*20,
impbarrel: impfloz*5600,
impgal: impfloz*160
};如果您担心impfloz变量会污染全局名称空间,那么您可以将整个过程包装在一个生命周期中。
this只在函数中有意义,在函数中它指的是调用函数所针对的对象。
https://stackoverflow.com/questions/25691190
复制相似问题