Je souhaite étendre Object.prototype, pour prendre en charge les notifications dans les données JSON et les éléments html via l'infrastructure d'interface utilisateur.Quels sont les pièges de l'extension Object.prototype?
Object.prototype.setValue = function(key,value){
// this simply sets value as this[key] = value
// and raises an event
Binder.setValue(this,key,value);
};
Object.prototype.getValue = function(key){
return Binder.getValue(this,key);
};
Cependant, sur cette question, Extending Object.prototype JavaScript et quelques autres, les gens disent que nous devrions éviter d'étendre Object.prototype, au lieu de tout autre type est très bien.
Si je ne le fais pas, alors mon code devient plus grand, par exemple
window.myModel.setValue("currentStatus","empty");
devra être écrit comme,
Binder.setValue(window.myModel,"currentStatus","empty");
Je veux savoir ce qui va mal tourner si je utiliser ces méthodes? cela va-t-il amener JQuery à se comporter de façon inattendue? J'ai vu une fois, que la requête ajax de jQuery invoque aussi des méthodes prototypes (car elles font référence à des fonctions pour la gestion d'événements).
Quels sont les autres effets secondaires de ce produit? Je sais que cela échoue pour (var x dans obj), mais la plupart du temps, nous pouvons utiliser obj.hasOwnProperty, cela devrait aider à droite?
Pourquoi l'auteur de jQuery a-t-il pris la décision de ne pas appeler .hasOwnProperty, quelle qu'en soit la raison? Il essaie d'appeler mes gestionnaires d'événements et notifie des changements, mais j'ai trouvé une solution de contournement en vérifiant les arguments. –