Javascript 如何在对象分解分配的左侧使用此选项?
(这个问题不是针对Vue的,但它是在Vue项目中,这就是为什么在函数和变量前面奇怪地使用Javascript 如何在对象分解分配的左侧使用此选项?,javascript,ecmascript-6,vuejs2,Javascript,Ecmascript 6,Vuejs2,(这个问题不是针对Vue的,但它是在Vue项目中,这就是为什么在函数和变量前面奇怪地使用This) 我有一个函数,它返回一个被分解为两个变量的对象: const { primaryNumber, typeOfExpression } = this.findPrimaryAndType( this.naturalExpressionYearOfBirth, this.gender, ); ({ primaryNumber: this.primaryNumber,
This
)
我有一个函数,它返回一个被分解为两个变量的对象:
const { primaryNumber, typeOfExpression } = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
);
({
primaryNumber: this.primaryNumber,
typeOfExpression: this.typeOfExpression
} = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
));
我不再希望变量是primaryNumber
和typeOfExpression
,我希望它们是this.primaryNumber
和this.typeOfExpression
,它们引用了我的视图数据部分
我使用下面的代码找到了一个糟糕的解决方法:
this.primaryNumber = primaryNumber;
this.typeOfExpression = typeOfExpression;
但这不是最好的方法!我该怎么办?如果我在{}
中的变量前面添加这个
,我会得到一个错误,如果我删除常量,它不会接受=
谢谢。您的解决方法是正确的(至少从纯Javascript的角度来看,不确定Vue如何处理这个问题)。您可以使用对象使其略短。分配:
const { primaryNumber, typeOfExpression } = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
);
Object.assign(this, { primaryNumber, typeOfExpression });
Object.assign(this, this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
));
或者,如果要将所有返回的属性从findPrimaryAndType
复制到当前实例,则可以完全跳过分解:
const { naturalExpressionYearOfBirth, gender } = this;
Object.assign(this, this.findPrimaryAndType(naturalExpressionYearOfBirth, gender));
您可以详细说明分解目标,而不是隐式创建const
变量:
const { primaryNumber, typeOfExpression } = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
);
({
primaryNumber: this.primaryNumber,
typeOfExpression: this.typeOfExpression
} = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
));
当然,这在简洁性方面没有多大帮助。如果结果对象上只有这两个属性,则可以使用对象。分配:
const { primaryNumber, typeOfExpression } = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
);
Object.assign(this, { primaryNumber, typeOfExpression });
Object.assign(this, this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
));
不知道可以将对象属性用作分解目标。我认为它必须是一个变量。@CodingTrigue它只能是变量声明中的一个变量,就像你不会做的那样var this.prop=42
,但就像this.prop=42
一样,在解构赋值中执行它也可以。