J'essaye de modifier dynamiquement tous les objets dans Javascript afin que sa construction puisse être accrochée. Voilà ce que j'ai maintenant, qui fonctionne presque correctement:Comment obtenir un objet AOP-like avant que les crochets de construction dans Javascript correctement?
Function.prototype.beforeConstruction = function(newFunc) {
var oldObj = this;
var newObj = function() {
newFunc.apply(this, arguments);
oldObj.apply(this, arguments);
}
newObj.prototype = oldObj.prototype;
return newObj;
};
Il est utilisé comme ceci:
someObj = someObj.beforeConstruction(function() {
//executed before someObj is constructed
});
Maintenant, le problème est que si l'objet a des champs statiques comme celui-ci:
Ceux-ci seront perdus lors de la réinitialisation de l'objet à celui avec le crochet. La copie du prototype n'aide pas.
Quelqu'un peut-il m'aider ici? Gardez à l'esprit que cela doit fonctionner sans avoir besoin de modifier les objets existants (de sorte qu'il peut être utilisé pour les bibliothèques existantes).
Cordialement, Tom
Pensez-vous que cela est la façon la plus efficace d'obtenir un travail de crochet beforeConstruction? – Tom