首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ES6将结构简化为"this“

ES6将结构简化为"this“
EN

Stack Overflow用户
提问于 2019-09-19 04:18:09
回答 2查看 161关注 0票数 2

试着破坏ES6。

我在React类构造函数中使用这段代码:

代码语言:javascript
运行
复制
let { class, ...rest } = props;

以上代码起作用。但我需要this.classthis.rest中的变量。

我有这个代码,它能工作:

代码语言:javascript
运行
复制
let { classes, ...rest } = props; 
this.classes = classes; 
this.rest = rest; 

我在找这样的东西:

代码语言:javascript
运行
复制
{ this.classes, ...this.rest } = props;  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-19 05:08:43

您可以使用重命名属性,但不幸的是,它涉及到一些重复:

代码语言:javascript
运行
复制
({ classes: this.classes, ...this.rest } = props);

classes是我们从props获得的属性的名称;this.classes是它被分配给的变量的名称。使用this.rest,我们显然不需要命名原始的属性名。

演示:

代码语言:javascript
运行
复制
function Foo(props) {
    ({ classes: this.classes, ...this.rest } = props);
}

const props = {
  classes: 'some clases',
  a: 'A',
  b: 'B'
}

console.log(new Foo(props));

票数 4
EN

Stack Overflow用户

发布于 2019-09-19 04:52:25

一个更复杂的实现方法是使用与所需的this绑定的函数。

在这里,重命名是关键,这里发生的是从props中选择值并将其赋值给任何我们重命名的

代码语言:javascript
运行
复制
({ classes:this.classes,...this.rest } = props)

所以这实际上和

代码语言:javascript
运行
复制
this.classes = props.classes;
this.rest = all the properties expect those which are already destrucutred

您可以在这里粘贴代码,并查看简化版本Babel

代码语言:javascript
运行
复制
const props = {
  classes: 'some clases',
  a: 'A',
  b: 'B'
}

let tempThis = {}
console.log(tempThis)

let getMeValuesOnThis = function(props) {
  ({ classes:this.classes,...this.rest } = props)
}.bind(tempThis)

getMeValuesOnThis(props)

console.log('---values after function execution---')
console.log(tempThis)

ray已经在注释中建议了一种使用Object.assign来实现这一点的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58003656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档