2016-04-15 101 views
1

我开始越来越多地使用Javascript工作,我偶然遇到以下问题。
我想根据我刚刚输入的值来分配数值分配值时分配值

简单的例子:

var Example = { 
    valueA : 100, 
    valueB : 20, 
    valueC : Example.valueA/Example.valueB 
} 

但是这给Example is undefinedvalueC线。我假设Example对象此时尚未准备好使用,它首先必须“完成”。

我可以这样做:

var Example = { 
    valueA : 100, 
    valueB : 20, 
    valueC : -1 // Gets value later 
} 
Example.valueC = Example.valueA/Example.valueB 

在这个例子中,这将是完美的accaptable,但我在的情况下结束了,我将有很多这样的“后初始化”的问题,或分配的值有点复杂(例如公式)。

可以像“简单的例子”工作?我当前的解决方案感觉像是矫枉过正,我需要更优雅的东西,读取代码时读取效果更好。

+0

啊,所以这是它叫什么。没有线索,谢谢。 – Martijn

回答

1

你可以使用一个getter

get语法绑定对象属性到时该属性抬头将被调用的函数。

一个优点是,您可以将其他值分配给属性valueAvalueB并获得除法的实际结果。

var Example = { 
 
    valueA: 100, 
 
    valueB: 20, 
 
    get valueC() { 
 
     return this.valueA/this.valueB; 
 
    } 
 
}; 
 

 
document.write(Example.valueC);

+0

但是这会使'valueC'成为一个函数?这将是我经常打电话给我的一个变量,难道不会有点紧张吗? – Martijn

+0

是的,它是一个函数,但它的调用没有括号,它的作用就像一个带有值的变量。不要担心打电话。 –