【问题标题】:ES6 destructuring whole object into thisES6 将整个对象解构为 this
【发布时间】:2019-11-19 00:08:06
【问题描述】:

我想知道是否有一种方法可以使用解构来将对象的所有属性复制到 this 而不知道道具。

class MyObject {
  constructor(data) {
    this.someFlag = true

    // How can I destructure 'data' into this.
  }
}

我见过this 的答案(和其他一些),但他们都知道要复制的属性或Object.assign 的用法。我想知道如何使用简单的解构来做到这一点。

【问题讨论】:

  • 如果你不知道属性,解构不起作用?当您的 Object.assign 解决方案已经有效时,不确定您要实现什么。
  • @roliroli Object.assign(this, data);
  • 这样做有什么用?您需要事先了解这些属性。
  • @FredMaggiowski 在不知道属性的情况下,您对对象解构唯一可以做的事情就是制作一个浅拷贝:const { ...copy } = data;,您仍然不知道其中的属性。不,你不能把this 放在那里,因为this 不是变量的有效名称。
  • 即使使用现代 ES,this = ... 在 JS 中仍然是不可能的。

标签: javascript object ecmascript-6


【解决方案1】:

不,您不能使用解构,因为这将用于重新定义您无法做到的this。要么选择Object.assign

Object.assign(this, data);

或者如果您真的想以某种方式使用解构:

Object.entries(data).forEach(([k, v]) => this[k] = v);

【讨论】:

  • 数组解构是牵强的;)
  • 感谢@JonasWilms(它正在解构 - 2 种;P)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2021-11-16
  • 2020-02-18
  • 2017-07-24
  • 2023-03-03
  • 2019-05-28
相关资源
最近更新 更多