Eventuali duplicati:
Use of .apply() with 'new' operator. Is this possible?Utilizzare applicare con un costruttore funzione di
ho 5 o 6 assegnazioni di variabili della forma
var analyteSelection = new TemplatedSelectionContainer($('.analyte-container', this), helpers, optionsTemplate);
var instrumentSelection = new AssetBackedSelection($('.instrument-container', this), helpers, optionsTemplate, Assets.instruments, 'Instrument');
var methodSelection = new AssetBackedSelection($('.method-container', this), helpers, optionsTemplate, Assets.methods, 'Method');
Come si può vedere, un una quantità significativa di parti di questi costruttori sono molto simili. Sarebbe bello se potessi creare un piccolo costruttore di accattivarsi generico che mi permettesse di fare qualcosa di simile:
var newSel = selectionContainerBuilder(this, helpers, optionsTemplate)
var analyteSelection = newSel(TemplatedSelectionContainer, '.analyte-container');
var instrumentSelection = newSel(AssetBackedSelection, '.instrument-container', Assets.instruments, 'Instrument');
var methodSelection = newSel(AssetBackedSelection, '.method-container', Assets.methods, 'Method');
posso raggiungere qualcosa di simile con
var selectionContainerBuilder = function(ctx, helpers, optionsTemplate) {
return function(FuncDef, selector, a, b, c, d, e, f) {
return new FuncDef($(selector, ctx), helpers, optionsTemplate, a,b,c,d,e,f);
}
}
Ma sul serio sigh. Vorrei solo essere in grado di unire i primi tre parametri noti all'inizio dell'array degli argomenti e applicarlo a FuncDef, ma mi viene meno la necessità di utilizzare il nuovo operatore.
E prima che qualcuno chieda, non posso eseguire l'applicazione di un nuovo operatore all'interno di FuncDef perché è generato dalla parola chiave della classe coffeescript.
Oh, è ... un buon punto in realtà. Hmm, mi chiedo se questo ha problemi di scoping? –
Lo scoping non dovrebbe essere un problema, dal momento che 'cls' e' args' prendono le loro catene di scope con loro mentre passano a 'newApply'. – user123444555621
Mi chiedo perché (a) tu scelga questa risposta e non quella accettata dall'altra domanda e (b), non hai votato per chiuderla come duplicato? –