2016-05-05 3 views
11

Я ищу определение класса ES6 и не понимаю аргументы конструктора. Вот класс:аргументы конструктора класса ES6

export class Modal { 
    constructor($modal, {size = null,} = {}) { 
     // stuff 
    } 
} 

Я смущен этим {size = null,} = {}. Это единственный аргумент? Что это значит?

+2

Возможный дубликат [Где я могу получить информацию о синтаксисе параметра объекта для функций javascript?] (Http://stackoverflow.com/q/10804982/1048572) и [что делает (состояние = {}) => состояние означает] (http://stackoverflow.com/q/35526463/1048572) – Bergi

ответ

10

Это object destructuring с заданным значением по умолчанию.

Если вы передаете OBJ как

{ size: true } 

вы можете получить доступ к «размер» внутри конструктора, как обычная переменная

export class Modal { 
    constructor($modal, {size = null } = {}) { 
    console.log(size); // prints the size value from the given object 
    } 
} 

Если вы ничего не передать или передать объект без «размера» размер будет нулевым. Вы можете сделать больше таких назначений. Просто разделите их запятыми.

Пример:

constructor($modal, { size = null, foo, bar = "test" } = {}) 

В этом случае, если вы передаете объект без свойств «Foo» будет определено, остальные действует как я уже упоминал выше.

Также стоит упомянуть, что вы должны добавить = {} в конце назначения деструктурирования в объявлении constructor. Это в случае, если вы ничего не пропускаете. В противном случае вам придется передать какой-нибудь объект (может быть пустым).

+0

Ну, на самом деле это не задание в этом случае ... – Bergi

+0

@bergi Это должен быть объект разрушения, не так ли? Исправленный –

Смежные вопросы