2016-08-15 3 views
-1

Я пытаюсь определить конструктор со следующим поведением на качестве опции аргумента:Аргумент ES6 по умолчанию для пустого объекта?

class Test { 
 
    constructor({ 
 
    someOption = 'foo', 
 
    otherOption = 'bar', 
 
    aSeedOfSomeSort = Math.random(), 
 
    // ... 
 
    }) { 
 
    console.log(
 
     someOption, otherOption, aSeedOfSomeSort 
 
    ); 
 
    } 
 
} 
 

 
new Test({someOption: 'lol'}); 
 
new Test({otherOption: 'derp'}); 
 
new Test({aSeedOfSomeSort: 0.5}); 
 
new Test({}); 
 
new Test(); // here's the problem

Это прекрасно работает, однако, я хочу, чтобы конструктор работать так, чтобы использовать все по умолчанию параметров, мне не нужно передавать пустой объект. Меня не волнует, что сам объект назван или нет в аргументах, но в контексте конструктора я хочу получить чистый способ прямого доступа ко всем параметрам без пространства имен или используя with.

Возможно ли это?

+0

Thanks Oriol! Не видел, что –

ответ

0

В конструктора, используйте:

constructor({ 
    someOption = 'foo', 
    otherOption = 'bar', 
    aSeedOfSomeSort = Math.random(), 
    // ... 
} = {}) 

Путем добавления = {} в конце концов, становится значением по умолчанию параметра ввода, если не определен.

Example

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