【问题标题】:Can't assign this in constructor [duplicate]无法在构造函数中分配它[重复]
【发布时间】:2016-08-22 04:57:06
【问题描述】:

我正在尝试将 values 中的道具合并到 this 中。

以下会引发错误。我该怎么做?

this = {...this, ...values}

【问题讨论】:

  • 我认为这是试图创建一个新对象并将其分配给this,而不是将属性合并到this
  • this 是一个保留的 javascript 字,不能被覆盖,您是否尝试过使用不同的 var 名称?
  • this 是不可分配的。你真的想做什么?
  • 我认为他正在尝试做相当于 jQuery 的$.extend(this, values)

标签: javascript ecmascript-6 this assign


【解决方案1】:

您可以使用Object.assign 方法扩展this

class Foo {
  constructor (props) {
    Object.assign(this, props);
  }
}

const foo = new Foo({ a: 1 });
console.log(foo.a); // 1

【讨论】:

    【解决方案2】:

    看到您对扩展运算符的使用,您似乎正在使用 ECMAScript 的第 3 阶段提案。

    https://github.com/tc39/proposal-object-rest-spread

    试试 Object.assign 方法:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

    Object.assign() 方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

    Object.assign(目标, ...来源);

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 2021-11-24
      相关资源
      最近更新 更多