Version 1
[yaffs-website] / node_modules / core-js / library / modules / _object-assign.js
1 'use strict';
2 // 19.1.2.1 Object.assign(target, source, ...)
3 var getKeys  = require('./_object-keys')
4   , gOPS     = require('./_object-gops')
5   , pIE      = require('./_object-pie')
6   , toObject = require('./_to-object')
7   , IObject  = require('./_iobject')
8   , $assign  = Object.assign;
9
10 // should work with symbols and should have deterministic property order (V8 bug)
11 module.exports = !$assign || require('./_fails')(function(){
12   var A = {}
13     , B = {}
14     , S = Symbol()
15     , K = 'abcdefghijklmnopqrst';
16   A[S] = 7;
17   K.split('').forEach(function(k){ B[k] = k; });
18   return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
19 }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
20   var T     = toObject(target)
21     , aLen  = arguments.length
22     , index = 1
23     , getSymbols = gOPS.f
24     , isEnum     = pIE.f;
25   while(aLen > index){
26     var S      = IObject(arguments[index++])
27       , keys   = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
28       , length = keys.length
29       , j      = 0
30       , key;
31     while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
32   } return T;
33 } : $assign;