2016-07-18 23 views
12

ES6'da, varyantik argümanlardan geçen bir ana kurucuyu çağırmanın bir yolu var mı, bir foo.apply(this, arguments)? Bir yanıt aradım ve gördüğüm tek örnek, super() (argüman yok) veya super(x, y) (belirli argümanlarla) olarak adlandırılıyor. super.apply(this, arguments) çalışmıyormuş gibi görünüyor.Değişken argümanlarla ES6 sınıfı süper()

+0

Yayma operatörü daha iyi bir uygulamadır. – Oriol

+0

'super.constructor.apply (this, arguments)' 'bu' başlatılmışsa çalışacaktır – Bergi

cevap

18

ben rahat bulup takip desen halinde

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

sahip olduğun ve kullanım adlandırılmış argümanlar yerine yapabilirsiniz:

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

Referanslar:

+1

Eğer bunu bir tarayıcıda kullanıyorsanız, destek oldukça yeni olduğundan ve bazı nedenlerden dolayı destek için yayılan operatör desteğinin farkında olun. spread operatörü, 'class' gibi diğer ES6 özelliklerinden daha sonra geldi. Örneğin, herhangi bir IE desteği olduğunu sanmıyorum. Tabii ki, bir transpiler de kullanabilirsiniz. – jfriend00

+2

@ jfriend00 IE, ES2015'ten neredeyse hiç bir şey desteklemiyor, bu yüzden kimin umurunda :-) – zerkms

+3

En son ve destek sınıfı olan "Chrome" sürümlerini bulmak kolay, ancak yayılan operatörü desteklemiyor. OP'ye sadece ihtiyaç duydukları tarayıcı desteğine sahip olduklarından emin olmalarını tavsiye ediyorum. Bu kadar savunmasın. Çevreniz destekliyorsa bu iyi bir cevaptır. – jfriend00

İlgili konular