Ho usato la seguente funzione per creare istanze di classi sconosciute per un certo tempo:constr.apply (questo, args) nelle classi ES6
Kernel.prototype._construct = function (constr, args) {
function F() {
constr.apply(this, args); // EXCEPTION!
}
F.prototype = constr.prototype;
return new F();
};
Se uso prototipi tutto funziona:
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
var person = Kernel._construct(Person, ["name", "surname"]); // WORKS!
Tuttavia, alcune persone stanno usando la mia libreria usando ES6 classi native nel nodo v4 +:
class Person {
constructor(name, surname) {
this.name = name;
this.surname = surname;
}
}
var person = Kernel._construct(Person, ["name", surname]); // EXCEPTION!
Essi sono sempre un errore:
TypeError: Class constructors cannot be invoked without 'new'
Devo essere in grado di invocare il costruttore con un numero sconosciuto di argomenti. Qualche idea su come aggirare questo problema?
Qual è lo scopo di '_bind' nel codice? – Amit
L'ho rimosso, era lì perché stavo testando usando _bind ... –