Maison >interface Web >js tutoriel >Le « nouveau » mot-clé de JavaScript est-il vraiment si dangereux ?
Le « nouveau » mot-clé de JavaScript est-il vraiment nocif ?
Au milieu des discussions en cours sur les bonnes pratiques JavaScript, l'affirmation de Douglas Crockford selon laquelle le « nouveau » Le mot-clé pose un risque a suscité la controverse. Cependant, il est essentiel d'approfondir ses avantages et ses inconvénients avant de parvenir à une conclusion définitive.
Avantages de l'utilisation du « nouveau »
Inconvénients de l'utilisation de « nouveau »
function foo() { if (!(this instanceof foo)) { return new foo(); } // Constructor logic follows... }
Une perspective équilibrée
Il est important de souligner que la position de Crockford ne devrait pas être aveuglément accepté. Il y a des moments où les avantages du « nouveau » l’emportent sur les inconvénients potentiels. En mettant en œuvre le mécanisme de programmation défensive décrit ci-dessus, les développeurs peuvent exploiter la puissance du « nouveau » sans compromettre la robustesse de leur code.
Considérations ES5/ES6
Dans ES5 , l'utilisation de "arguments.callee" dans le contrôle défensif est interdite en mode strict. ES6 introduit une implémentation sécurisée du « nouveau » au sein des classes, éliminant ainsi le besoin de contrôles externes. De plus, "new.target" permet de vérifier les constructeurs qui ne sont pas appelés avec "new".
Conclusion
Bien que les préoccupations de Crockford soient notées, le "new.target" " Le mot-clé n'est pas intrinsèquement nuisible. En employant des pratiques de codage judicieuses et en comprenant ses subtilités, les développeurs peuvent tirer parti des avantages du « nouveau » tout en atténuant les pièges potentiels. Une approche équilibrée qui prend en compte à la fois les avantages et les techniques défensives garantit une utilisation sûre et efficace de cette fonctionnalité JavaScript essentielle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!