J'ai regardé d'autres exemples en ligne, mais ils n'ont pas fonctionné.Instantaition dynamique en JavaScript
Alors ...
Je suis en train de mettre en œuvre le « modèle de décorateur » classique de « Head First » en JavaScript ... et je suis vraiment proche.
le cas suivant: "CLASSES"
// "CLASSES": BEVERAGES
function DarkRoast(){
this.cost = 1.00;
this.description = "Dark Roast";
};
// DECORATORS: CONDIMENTS
function Milk(beverage){
var instance = beverage;
beverage.cost = function(){
return instance.cost + 0.25;
};
beverage.description = functionn(){
return instance.description + ', Milk';
};
};
QUESTION: Comment puis-je instancier "Milk" dynamique de la fonction suivante?
function appendCondiment(className, beverage) {
/* Needs to do this, but dynamically:
var instance = new Milk(beverage); */
// This fails (of course)
var instance = new window[className].call(beverage);
}
Vos cours sont des fonctions globales? C'est une mauvaise idée ... l'utilisation de variables globales devrait être minimisée. Définissez un espace de noms 'MYAPP.classes', puis' var Milk = MYAPP.classes ["Milk"] '... –
Vous écrasez la propriété numérique' .cost' avec une méthode '.cost'. (Idem pour '.description') Vous ne pouvez pas avoir deux propriétés du même nom sur le même objet. –
'new' est inutile pour' Milk'. Il modifie 'boisson 'au lieu de' ceci'. – pimvdb