set.prototype.difference
Version:
An ESnext spec-compliant `Set.prototype.difference` shim/polyfill/replacement that works as far down as ES3
29 lines (23 loc) • 564 B
JavaScript
;
var Set = require('es-set/polyfill')();
var implementation = require('./implementation');
module.exports = function getPolyfill() {
if (typeof Set.prototype.difference === 'function') {
var called = false;
var setLike = {
size: Infinity,
has: function () {},
keys: function () {
called = true;
return [].values();
}
};
new Set([1]).difference(setLike);
setLike.size = 2147483648; // 2 ** 31
new Set([1]).difference(setLike);
if (!called) {
return Set.prototype.difference;
}
}
return implementation;
};