| | |
| | | 'use strict'; |
| | | var $ = require('../internals/export'); |
| | | var IS_PURE = require('../internals/is-pure'); |
| | | var getBuiltIn = require('../internals/get-built-in'); |
| | | var bind = require('../internals/function-bind-context'); |
| | | var call = require('../internals/function-call'); |
| | | var aCallable = require('../internals/a-callable'); |
| | | var anObject = require('../internals/an-object'); |
| | | var bind = require('../internals/function-bind-context'); |
| | | var speciesConstructor = require('../internals/species-constructor'); |
| | | var getSetIterator = require('../internals/get-set-iterator'); |
| | | var iterate = require('../internals/iterate'); |
| | | |
| | | // `Set.prototype.map` method |
| | | // https://github.com/tc39/proposal-collection-methods |
| | | $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { |
| | | $({ target: 'Set', proto: true, real: true, forced: true }, { |
| | | map: function map(callbackfn /* , thisArg */) { |
| | | var set = anObject(this); |
| | | var iterator = getSetIterator(set); |
| | | var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); |
| | | var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined); |
| | | var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); |
| | | var adder = aCallable(newSet.add); |
| | | iterate(iterator, function (value) { |
| | | adder.call(newSet, boundFunction(value, value, set)); |
| | | call(adder, newSet, boundFunction(value, value, set)); |
| | | }, { IS_ITERATOR: true }); |
| | | return newSet; |
| | | } |