2017-03-21 1 views
0

J'étudie actuellement le javascript prototype et de l'héritage, et je l'ai rencontré les paragraphes sur MDNconfusion sur l'expression « étendre Object.prototype ou l'un de l'autre accumulation dans le prototype »

suivants Je ne suis pas bien sûr ce que l'auteur voulait dire par extend Object.prototype or one of the other build-in prototype. Quelqu'un pourrait-il clarifier le concept, de préférence avec un échantillon de code? Merci

enter image description here

+2

Cela signifie essentiellement "essayez de ne rien ajouter à' Object.prototype' "*. Par exemple 'Object.prototype.buyMeAPony = function() {...}' serait une mauvaise idée. Idem pour les autres prototypes intégrés – Phil

+0

oh oui, cela a du sens. Merci pour le commentaire – Thor

Répondre

2

Le terme "prototype intégré" fait référence aux objets prototypes dont héritent les objets standard. Cela inclut la langue spécifiée Boolean.prototype, Number.prototype, String.prototype, Symbol.prototype, Object.prototype, Array.prototype, Function.prototype, Date.prototype, et les objets prototypes pour les différents Error s, les tableaux typés, des structures de données ((blesses) Carte, Set) et itérateurs.

Il englobe également d'autres objets prototypes natif dans l'environnement, par exemple les DOM (Node.prototype, Element.prototype, Document.prototype, ...) et d'autres API Web (par exemple XMLHttpRequest.prototype). Voir le definition of built-in objects et le whole section about standard built-in objects dans ES6.

En général, vous ne devriez pas jouer avec eux. Ils sont fournis par l'environnement, ils ne sont pas les vôtres - ne les touchez pas et ne créez pas vos propres méthodes. Si vous voulez écrire du code modulaire et interopérable, vous ne devez pas dépendre de modifications globales personnalisées des polices intégrées. Voir aussi Why is extending native objects a bad practice? pour plus de détails.

1

autres choses encore Object, comme Array et Function, ont des prototypes aussi. Il est considéré comme une mauvaise pratique d'étendre également ces prototypes, pour les raisons mentionnées sur MDN.