Est-il utile ou redondant d'importer le polyfill ES6 pour Object
import 'core-js/es6/object';
et aussi le polyfill ES7 pour Object
?
import 'core-js/es7/object';
Le polyfill ES7 couvre-t-il toutes les fonctionnalités ES6 et puis-je laisser le polyfill ES6 ou bien le polyfill ES6 ajoute-t-il des fonctionnalités non présentes dans le polyfill ES7?
Cette réponse concerne core-js@2
. A partir de core-js@3
, il n'y a plus de préfixes ES6 et ES7 séparés. Cela est dû à la façon dont ECMAScript s'est développé. Vous pouvez trouver plus de détails dans le core-js @ 3, babel and a look into the future post.
Oui, il y a une utilisation. Comparez simplement core-js/es6/object.js
à core-js/es7/object.js
.
Le polyfill objet ES6 fournit:
• Symbol
• Object.create
• Object.defineProperty
• Object.defineProperties
• Object.getOwnPropertyDescriptor
• Object.getPrototypeOf
• Object.keys
• Object.getOwnPropertyNames
• Object.freeze
• Object.seal
• Object.preventExtensions
• Object.isFrozen
• Object.isSealed
• Object.isExtensible
• Object.assign
• Object.is
• Object.setPrototypeOf
• Object.prototype.toString
D'autre part, le polyfill objet ES7 fournit:
• Object.getOwnPropertyDescriptors
• Object.values
• Object.entries
• Object.prototype.__defineGetter__
• Object.prototype.__defineSetter__
• Object.prototype.__lookupGetter__
• Object.prototype.__lookupSetter__
Ainsi, le polyfill ES6 ajoute en effet uniquement les méthodes introduites dans ES6 et ce n'est pas couvert par le polyfill ES7. Celui-ci seulement ajoute des méthodes introduites dans ES7.
core-js semble être structuré de la même manière pour les autres classes.