web-dev-qa-db-ja.com

ES6とES7の両方のcore-jsポリフィルをインポートする用途はありますか?

ObjectのES6ポリフィルをインポートすることは有用ですか、それとも冗長ですか

import 'core-js/es6/object';

ObjectのES7ポリフィルもですか?

import 'core-js/es7/object';

ES7ポリフィルはすべてのES6機能をカバーしていますか?また、ES6ポリフィルを省略したままにすることはできますか?それとも、ES6ポリフィルはES7ポリフィルに存在しない機能を追加しますか?

12
Ionaru

この回答はcore-js@2。から始まる core-js@3、別個のES6とES7プレフィックスはなくなりました。これはECMAScriptの開発方法によるものです。詳細は core-js @ 3、babel and a look to the future の投稿をご覧ください。

はい、用途があります。単純に比較 core-js/es6/object.js から core-js/es7/object.js

ES6オブジェクトポリフィルは次の機能を提供します。
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

一方、ES7オブジェクトのポリフィルは次の機能を提供します。
Object.getOwnPropertyDescriptors
Object.values
Object.entries
Object.prototype.__defineGetter__
Object.prototype.__defineSetter__
Object.prototype.__lookupGetter__
Object.prototype.__lookupSetter__

したがって、ES6ポリフィルは実際にES6で導入されたonlyメソッドを追加しますが、これはES7ポリフィルでカバーされているnotです。それonlyはES7で導入されたメソッドを追加します。

core-jsは他のクラスと同じように構造化されているようです。

15
Just a student

異なるECMAScriptバージョンの core-js からのポリフィルは、ほとんどが異なります。たとえば、 ES6 および ES7 のオブジェクトpolyfillを見てください。

したがって、ES6およびES7の機能をポリフィルする場合は、両方をインポートする必要があります。

2
cyr_x