2016-07-18 3 views
12

В ES6 существует ли способ вызвать родительский конструктор, проходящий через переменные аргументы, a la foo.apply(this, arguments)? Я искал ответ, и единственные экземпляры, которые я вижу, либо вызывали super() (без аргументов), либо вызывали super(x, y) (с конкретными аргументами). super.apply(this, arguments) не работает.ES6 класс super() с переменными аргументами

+0

Оператор спреда лучше применять. – Oriol

+0

'super.constructor.apply (this, arguments)' будет работать, если 'this' уже был инициализирован – Bergi

ответ

18

Узор я нахожу удобным и следовать,

constructor(...args) { 
    super(...args); 
} 

В случае, если у вас есть и применять именованные аргументы вы могли бы сделать это вместо:

constructor(a, b, c) { 
    super(...arguments); 
} 

Ссылки:

+1

Если вы используете это в браузере, просто знайте о поддержке оператора сотовой связи, так как поддержка является довольно новой и по какой-то причине поддерживает оператор распространения пришел позже, чем другие функции ES6, такие как 'class'. Например, я не думаю, что есть поддержка IE. Разумеется, вы также можете использовать транспилер. – jfriend00

+2

@ jfriend00 IE не поддерживает почти ничего из ES2015, поэтому, кто заботится :-) – zerkms

+3

Легко найти версии Chrome, которые не являются последними и поддерживают «класс», но не поддерживают оператор спреда. Я просто советую OP убедиться, что у них есть поддержка браузера, в которой они нуждаются. Не становитесь так оборонительными. Это хороший ответ, если ваша среда поддерживает его. – jfriend00

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