我正在试图弄清楚如何组织我的变量,这就是我想要的结果:
settings.txt.token => 'txt'
settings.txt.path => '/txt/'
这显然是一个非常简单的示例,但我希望settings.txt.path依赖于settings.txt.token。所以sudo decleration将是:
export var txt = {
token: 'txt',
path: '/' + token + '/'
};
这样做有好办法吗?请注意,我正在使用ES6。
答案 0 :(得分:1)
一个属性的静态声明不能直接引用同一个对象中的另一个属性,因为该对象本身处于形成过程中并且尚未完全存在,并且javascript没有从静态声明引用同级属性的语法。因此,您必须推迟计算新属性的值,直到对象存在之后。你可以通过几种方式做到这一点。
一个是吸气剂:
export var txt = {
token: 'txt',
get path() { return '/' + this.token + '/';}
};
另一种方法是在静态声明完成后将属性添加到对象:
export var txt = {
token: 'txt',
};
txt.path = '/' + txt.token + '/';
getter选项的优势在于,如果.token
被修改,后续.path
请求将自动反映.token
的新值。第二个选项不是动态链接的。如果txt.path
发生更改,则txt.token
值不会自动更改。您可以选择任一行为。
答案 1 :(得分:0)
是的,您无法引用对象初始值设定项中的字段。但你可以在构造函数中:
export var txt = new function(){
this.token = "txt";
this.path = "/" + this.token + "/";
}