L'utilisation de Prototype pour étendre les objets natifs est-elle mauvaise?

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:

  • Ne pas étendre Object.prototype
  • Certaines personnes aimeraient étendre les choses, certaines personnes ne le font pas
  • Vous devez savoir ce que vous faites
  • N'utilisez pas deux bibliothèques qui étendent les choses, car elles peuvent être mauvaises
  • L'extension des prototypes pour ajouter des fonctionnalités standard est presque toujours correcte.

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.