Je voudrais augmenter l'objet Function pour faire plus d'opérations lors de la construction d'un nouvel objet.
Est-ce possible?Puis-je effectuer des actions pendant la construction d'un objet en modifiant le prototype de fonction?
Répondre
Il est impossible de modifier le prototype de fonction afin de pouvoir intercepter des appels à une fonction. Le plus proche que vous allez obtenir est d'ajouter une méthode que vous pouvez appeler à la place d'un constructeur. Par exemple:
Function.prototype.create = function() {
var obj = new this(); // instantiate the object
this.apply(obj, arguments); // call the constructor
// do your stuff here (e.g. add properties or whatever it is you wanted to do)
obj.foo = 'bar';
return obj;
};
function SomeObject(name) {
this.name = name;
}
var obj = SomeObject.create('Bob');
obj.foo; // => 'bar'
Sinon, vous pouvez écrire une fonction que vous appelez pour construire un constructeur:
Function.makeConstructor = function(fn) {
return function proxyConstructor() {
// check to see if they called the function with the "new" operator
if(this instanceof proxyConstructor) {
var obj = new fn();
fn.apply(obj, arguments);
// do your stuff here (e.g. add properties or whatever it is you wanted to do)
obj.foo = 'bar';
return obj;
} else {
return fn.apply(null, arguments);
}
};
};
var SomeObject = Function.makeConstructor(function(name) {
this.name = name;
});
var obj = SomeObject.create('Bob');
obj.foo; // => 'bar'
ne pouvez-vous pas simplement brancher un événement? –
Aucun événement ne se déclenche à chaque fois que vous appelez un constructeur d'objet. Le modèle d'objet javascript n'est pas associé à l'API DOM qui est l'emplacement du modèle d'événement du navigateur. Je pense vraiment que ceux-ci sont aussi proches que vous allez l'obtenir. – Prestaul
- 1. Comment puis-je passer un objet PHP à une fonction statique pendant la construction de l'objet?
- 2. Rendre l'objet PHP effectuer différentes actions en fonction du nom de la variable
- 3. Actions de post-construction CruiseControl.NET
- 4. Erreur C2228 lors de la construction boost :: objet fonction dans la liste des arguments constructeur
- 5. DataNucleus: Comment effectuer automatiquement des actions lors de la validation d'une transaction?
- 6. Masquer le menu des actions du site dans moss en fonction de la page
- 7. propriétés prototype et objet constructeur
- 8. Comment faire des actions visibles pendant un appel téléphonique?
- 9. Mise à jour des références javascript après la réduction pendant le processus de construction
- 10. Fonction prototype getStyle ('height')
- 11. Panneau de masque ExtJS pendant que les actions sont effectuées
- 12. Quelqu'un peut-il expliquer le but des différentes actions de construction dans VS 2008?
- 13. Comment inclure le code dans la construction en fonction de la configuration de la solution active
- 14. Besoin d'aide en modifiant ce code
- 15. Comment utiliser une fonction de construction de la doctrine
- 16. Comment sélectionner les entrées de formulaire en fonction des actions et des choix de l'utilisateur?
- 17. Windows se bloque pendant la construction sans tête
- 18. Prototype de fonction déclaré à l'intérieur de la meilleure pratique?
- 19. Javascript - HTMLCollection à la chaîne en utilisant le prototype
- 20. Liaison des fonctions personnalisées aux événements DOM dans le prototype?
- 21. Objet XMLHTTPRequest unique pour effectuer plusieurs requêtes
- 22. AJAX (prototype/php) obtenant des mises à jour partielles de l'état pendant l'exécution du script
- 23. Insérer un nom de fonction pendant PreBuild
- 24. LoadLibrary échoue lors de l'inclusion d'un fichier spécifique pendant la construction de la DLL
- 25. différence entre les propriétés de la classe et la fonction prototype en Javascript
- 26. Chargement de différents assemblages au moment de la compilation en fonction de la cible de construction
- 27. Comment effectuer une meilleure fonction de colorisation?
- 28. Gestion des actions non existantes?
- 29. Quel est le moyen le plus pratique d'arrêter un objet Ajax dans le prototype d'avaler des exceptions?
- 30. Comment déployer de manière conditionnelle un app.config en fonction de la configuration de la construction?
Vous allez avoir besoin de fournir plus de détails ou votre question sera fermé. –
Il semble que vous vouliez modifier le prototype de la fonction afin que vous puissiez exécuter du code à chaque fois qu'un objet est construit à partir d'une fonction ... Est-ce que c'est l'essentiel? – Prestaul
@Prestaul: Oui. –