Я просматривал Руководство по стилю JavaScript Airbnb сегодня, когда натолкнулся на интригующий шаблон, который ловко использует оператор ES7 Object Rest Spread для исключения свойств объекта.
Готовый? Вот:
const myObject = { a: 1, b: 2, c: 3 }; const { a, ...noA } = myObject; console.log(noA); // => { b: 2, c: 3 }
Сначала это меня смутило, поэтому я объясню. Мы используем Деструктуризацию объекта в сочетании с Оператором« Остаточное распространение объекта », чтобы разделить большой myObject
на отдельные части a
и noA
.
По сути, он создает две новые const
переменные и сохраняет в них отдельные части нашего объекта. Оператор rest сообщает сценарию, что нужно поместить любое другое явно не определенное свойство в последнюю переменную. Итак, все, что нам нужно сделать, это деструктурировать все свойства, которые нам не нужны - a
- так что у нас останутся только те свойства, которые мы хотим сохранить в нашей последней переменной - noA
.
«Совершенство достигается ... когда нечего убирать». - Антуан де Сент-Экзюпери
Что особенно замечательно в этом шаблоне, в отличие от delete
, мы не изменяем исходный объект myObject
и не удаляем ссылку a
, поэтому можем быть уверены, что случайно не сломали что-то, что использует myObject
или a
.