J'ai lu quelque part que l'utilisation d'un prototype
pour étendre les objets natifs ( String
, Number
, Array
, etc.) était une mauvaise idée. Est-ce vrai? Pourquoi ou pourquoi pas?
Je ne pense pas que ce soit mauvais. Si vous examinez Ruby on Rails, de nombreux objets natifs sont étendus avec des fonctionnalités personnalisées et c'est un très bon cadre.
Ce qui serait mauvais, c'est que si vous modifiez les méthodes existantes sur les objets natifs. Cela pourrait entraîner des conséquences imprévisibles.
Il y a une excellente discussion à propos de cette vidéo de JSConf 2011 par Andrew Dupont. http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542
Fondamentalement, les points sont les suivants:
Object.prototype
Je resterais évident d'étendre / modifier le comportement des objets natifs.
Cela a du moins un sens lorsqu'il se développe dans un environnement d'équipe.
Tout simplement parce que, mois plus tard, un autre développeur qui écrivait un autre code indépendant ne reconnaîtrait pas immédiatement le comportement modifié, à moins d'être documenté quelque part et pris connaissance de celui-ci avant de commencer sa tâche.
Au lieu de cela, je suggère d'encapsuler / "espace de noms" – toutes ces fonctionnalités telles que quelqu'un puisse choisir ou non utiliser les fonctions modifiées.
En outre, les objets indigènes et leurs méthodes sont soigneusement testés pour des cas de grande envergure. Donc, vous devriez être complètement sûr de ce que vous faites avant de modifier les fonctionnalités natives.