javascript 将对象解构为 'this'

javascript destructure object to 'this'

我想将 response.data 的分页结果分配给 Vue 数据
所以显而易见的方法就是

    this.data = response.data.data
    this.total = response.data.total
    this.perPage = response.data.per_page

但是有没有一种 ES6 方法可以将结果直接分配给这样的东西?

    const page = { data, total, per_page : perPage } = response.data
    this = { ...this, ...page }

注意:以上代码无效。

不适用于 this - this 无法重新分配。

如果 data 对象包含 只有 那些属性,并且您将 response.dataper_page 属性 更改为perPage,那么你可以使用 Object.assign:

Object.assign(this, response.data);

如果data对象包含其他属性,或者无法重命名per_page,则:

const { data, total, per_page : perPage } = response.data
Object.assign(this, { data, total, perPage });

所以根据@CertainPerformance 的回答并研究如何从 How to get a subset of a javascript object's properties

中检索对象的子集属性

我得到了一个对象解构的有效解决方案。

    const page = (({ data, total, per_page: perPage }) => ({ data, total, perPage }))(response.data)
    Object.assign(this, page)

但是代码并没有缩短或更易于阅读,所以我回到显而易见的方式。