通过解构对象并分配变量
,is代码可以正常工作const { allowNegative, decimal, precision, prefix, suffix, thousands } = this.options;
但是当我尝试使用this
运算符时,它会抛出一个错误:
`{ this.tabConfig, this.searchUiConfig, this.gridUiConfig } = CONFIG;`
其中 CONFIG 是JSON。在赋值运算符(=)上 [ts]声明或语句预期 时出错。
有没有比这更好的方法:
this.tabConfig = CONFIG.tabConfig;
this.searchUiConfig = CONFIG.searchUiConfig;
this.gridUiConfig = CONFIG.gridUiConfig;
答案 0 :(得分:7)
您可以使用以下语法执行此操作:
({ prop: this.prop } = obj);
我在这里使用deep object matching
var obj = { propIwantFromObj: 'foo' };
var { propIwantFromObj: whereToStoreValue } = obj;
在左侧部分,您将说明要从对象获取哪个属性,在右侧,您将说明存储值的位置。因此,在这种情况下,将创建一个名为whereToStoreValue
的新变量,其值为foo
。
var obj = { propIwantFromObj: 'foo' };
var whereToStoreValue = obj.propIwantFromObj;
可用于在this
(或其他对象)上存储值,但由于.
,您需要将其括在括号内。出于某种原因,这个hack允许你使用.
。
如果你不使用括号,你会得到语法错误(它也不适用于纯JS)。
示例:
const CONFIG = {
tabConfig: 1,
searchUiConfig: 2,
gridUiConfig: 3,
};
class Foo {
bar() {
({ tabConfig: this.tabConfig, searchUiConfig: this.searchUiConfig, gridUiConfig: this.gridUiConfig } = CONFIG);
}
}
const foo = new Foo();
foo.bar();
console.log(foo.tabConfig);
console.log(foo.searchUiConfig);
console.log(foo.gridUiConfig);