JSON 使用内部定义变量的定义
JSON Definitions Using Internally Defined Variables
我正在尝试创建一个 JSON 对象来存储程序的一些参数。一些参数需要在定义时根据其他参数计算得出。我想在对象定义中这样做,但也许这是不可能的
var params = {
a: 50,
b: 70,
c: this.a+this.b
}
</pre>
结果
会发生什么
>params.c
NaN</pre>
我希望发生的事
>params.c
120</pre>
编辑
进一步阅读后,我想我使用的是对象文字表示法而不是 JSON。
就个人而言,我会创建常量(因为幻数是魔鬼),但这是一个过于简单化的示例:
const FIFTY = 50;
const SEVENTY = 70;
var params = {
a: FIFTY,
b: SEVENTY,
c: FIFTY + SEVENTY
};
您可以使用这种方法:
为避免重新计算,请使用函数Object.assign
。
The get
syntax binds an object property to a function that will be called when that property is looked up.
var params = {
a: 50,
b: 70,
get c() {
console.log('Called!');
return this.a + this.b;
}
};
console.log(params.c); // Prints 120 then Called!
console.log(params.c); // Prints 120 then Called!
var params = Object.assign({}, {
a: 50,
b: 70,
get c() {
console.log('Called from function Object.assign!');
return this.a + this.b;
}
});
params.a = 1000; // To illustrate.
console.log(params.c); // Prints 120
console.log(params.c); // Prints 120
.as-console-wrapper {
max-height: 100% !important
}
资源
我建议做的是从一个不包含 c
的对象开始,然后在对象外部进行计算。计算完成后,只需将总和作为新的 key/value 对添加回对象:
var params = {
a: 50,
b: 70,
}
var sum = 0;
for (var el in params) {
if (params.hasOwnProperty(el)) {
sum += params[el];
}
}
params['c'] = sum;
console.log(params);
我正在尝试创建一个 JSON 对象来存储程序的一些参数。一些参数需要在定义时根据其他参数计算得出。我想在对象定义中这样做,但也许这是不可能的
var params = { a: 50, b: 70, c: this.a+this.b } </pre>
结果会发生什么
>params.c NaN</pre>
我希望发生的事
>params.c 120</pre>
编辑
进一步阅读后,我想我使用的是对象文字表示法而不是 JSON。
就个人而言,我会创建常量(因为幻数是魔鬼),但这是一个过于简单化的示例:
const FIFTY = 50;
const SEVENTY = 70;
var params = {
a: FIFTY,
b: SEVENTY,
c: FIFTY + SEVENTY
};
您可以使用这种方法:
为避免重新计算,请使用函数Object.assign
。
The
get
syntax binds an object property to a function that will be called when that property is looked up.
var params = {
a: 50,
b: 70,
get c() {
console.log('Called!');
return this.a + this.b;
}
};
console.log(params.c); // Prints 120 then Called!
console.log(params.c); // Prints 120 then Called!
var params = Object.assign({}, {
a: 50,
b: 70,
get c() {
console.log('Called from function Object.assign!');
return this.a + this.b;
}
});
params.a = 1000; // To illustrate.
console.log(params.c); // Prints 120
console.log(params.c); // Prints 120
.as-console-wrapper {
max-height: 100% !important
}
资源
我建议做的是从一个不包含 c
的对象开始,然后在对象外部进行计算。计算完成后,只需将总和作为新的 key/value 对添加回对象:
var params = {
a: 50,
b: 70,
}
var sum = 0;
for (var el in params) {
if (params.hasOwnProperty(el)) {
sum += params[el];
}
}
params['c'] = sum;
console.log(params);