Яваскрипт деструктурирует объект на «это»

Я хотел бы назначить результат разбивки на страницы из 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 }

Примечание: приведенный выше код не работает.

Всего 2 ответа


Не с this - this не может быть переназначено.

Если объект data содержит только эти свойства, и вы изменили свойство per_page в response.data на 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 и того, как извлечь свойства подмножества объекта, из Как получить подмножество свойств объекта javascript

Я получил рабочее решение с деструктуризацией объекта.

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

Однако код не укорочен и не легче для чтения, поэтому я вернусь к очевидному пути.


Есть идеи?

10000