| | |
| | | 'use strict'; |
| | | var $ = require('../internals/export'); |
| | | var IS_PURE = require('../internals/is-pure'); |
| | | var getBuiltIn = require('../internals/get-built-in'); |
| | | var call = require('../internals/function-call'); |
| | | var aCallable = require('../internals/a-callable'); |
| | | var anObject = require('../internals/an-object'); |
| | | var speciesConstructor = require('../internals/species-constructor'); |
| | |
| | | |
| | | // `Set.prototype.difference` method |
| | | // https://github.com/tc39/proposal-set-methods |
| | | $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { |
| | | $({ target: 'Set', proto: true, real: true, forced: true }, { |
| | | difference: function difference(iterable) { |
| | | var set = anObject(this); |
| | | var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); |
| | | var remover = aCallable(newSet['delete']); |
| | | iterate(iterable, function (value) { |
| | | remover.call(newSet, value); |
| | | call(remover, newSet, value); |
| | | }); |
| | | return newSet; |
| | | } |