2016-04-27 166 views
2

中指定此我试图合并从valuesthis的道具。不能在构造函数

以下引发错误。我怎样才能做到这一点?

this = {...this, ...values} 
+0

我认为这是试图创建一个新的对象,并将其分配给'this',而不是将属性合并到'this'中。 – Barmar

+0

'this'是一个保留的javascript字,不能被覆盖,是否尝试过使用不同的var名称? – Derek

+1

'这是'不可分配的。你真的想要做什么? – Amit

回答

8

您可以用Object.assign方法延长this

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

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

看到你的蔓延运营商的使用,它看起来像您使用的是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(目标...源);