Factories et opérateur instanceof en ES5
Hello,
A mon tour de poser une question pour changer. Je souhaiterai une écrire une factory (fonction constructeur de fonctions) et respecter la chaîne prototypale, c'est-à-dire new Factory() instanceof FactoryAvec les constructeurs classiques retournant un objet, c'est le comportement par défaut. Mais quand il s'agit de retourner une fonction, c'est beaucoup plus délicat.
Exemple:
Code:
1 2 3 4 5 6 7 8 9
| function MultiplierFactory(n1){
return function(n2){ return n1*n2; };
}
var multiplyBy3 = new MultiplierFactory(3);
multiplyBy3(7)
> 21
multiplyBy3 instanceof MultiplierFactory
> false |
La seule option que j'ai trouvé est de modifier dynamiquement le prototype via Object.setPrototypeOf:
Code:
1 2 3 4 5 6 7 8 9 10 11
| function MultiplierFactory(n1){
var f = function(n2){ return n1*n2; };
Object.setPrototypeOf(f, MultiplierFactory.prototype);
return f;
}
var multiplyBy3 = new MultiplierFactory(3);
multiplyBy3(7)
> 21
multiplyBy3 instanceof MultiplierFactory
> true |
Ce qui fonctionne sur tous les navigateurs supportant Object.setPrototypeOf. Mais que faire dans le cas d'IE9 et inférieur ? Existe-t-il une solution en EcmaScript 5 pour parvenir à ce résultat ?
Merci d'avance